マテリアライズドビュー
データベース管理システムは関係モデルに従うため、ビュー は仮想的な テーブル であり、データベースに対するクエリの結果を表す。ビューを参照または更新すると、その処理はビューの対象となった実際のテーブルへの参照または更新へ変換され、実行される。
マテリアライズドビュー (Materialized View; 体現ビューともいう)はこれとは異なるアプローチを取り、クエリの結果を実際のテーブルにキャッシュする。キャッシュされたデータは元のテーブルが変更されるたびに更新される。そのため、最新でない状態を取得する可能性はあるが、効率的なアクセスが可能になる。特にデータウェアハウスでは実際のテーブルに対して頻繁にクエリを実行することは非常にコストが高いため、マテリアライズドビューが有効である。
さらに、マテリアライズドビューは実際のテーブルとして実体化されるため、実際のテーブルに対して適用可能な操作はすべてマテリアライズドビューにも適用できる。特にインデックスを定義できることはクエリにかかる時間を大幅に短縮する。通常のビューではベースとなるテーブルのインデックスのみが利用可能か、もしくは全く利用できない場合が多い。
マテリアライズドビューを初めて実装したのは Oracle Database である。Oracle では、以下の3種類のマテリアライズドビューがある:
- 参照のみ
- 更新することはできないが、複雑な定義のビューも利用できる。
- 更新可能
- マスターサイトから切り離された状態であっても更新できる。
- 必要に応じて更新される。
- リソースの消費が少ない。
- Advanced Replication option をインストールする必要がある。
- 書き込み可能
- FOR UPDATE 句で作成する。
- 書き込み結果はビューが更新された際に失われる。
- Advanced Replication option をインストールする必要がある。
外部リンク
編集- Flexviews for MySQL - incrementally refreshable materialized views w/ MySQL
- Implementing materialized views in PostgreSQL
- Implementing materialized views in MySQL
- Improving Performance with SQL Server 2005 Indexed Views
- Materialized View Concepts and Architecture - Oracle
- SQL Snippets: SQL Features Tutorials - Materialized Views - Oracle