適切な条件でマテリアライズドビューを使用すると、ジョインなどのコストの高い操作を事前に計算し、その結果をディスクに保管されるビューの形式で格納することによって、パフォーマンスを大幅に向上させることができます。オプティマイザーでは、クエリを満たす最も効率的な方法を決定するときに、クエリ内でマテリアライズドビューが参照されていなくても、マテリアライズドビューを検討します。
アプリケーションの設計では、負荷の高い集約操作やジョイン操作を含むクエリのように、コストの高いクエリやクエリでコストの高い部分を頻繁に実行する場合は、マテリアライズドビューを定義することを検討してください。マテリアライズドビューは、次のような環境でのパフォーマンスを向上することを目的に設計されています。
データベースのサイズが大きい。
頻繁なクエリにより、大量のデータに対する集約操作やジョイン操作が繰り返し実行される。
基本となるデータへの変更は頻度が比較的少ない。
最新のデータにアクセスすることは重大な要件ではない。
マテリアライズドビューを使用する前に、次の要件、設定、制限を検討してください。
ディスク領域の要件 マテリアライズドビューにはベーステーブルからのデータの複製が含まれるため、作成するマテリアライズドビューのサイズ分の領域をデータベースのディスク上に追加で割り付ける必要があることがあります。得られる利点がマテリアライズドビューの使用コストと釣り合うように、追加領域の要件は慎重に検討する必要があります。
保守コストとデータの最新性の要件 マテリアライズドビューのデータは、基本となるテーブルのデータが変更されたときにリフレッシュする必要があります。次のような競合要因を考慮の上、マテリアライズドビューをリフレッシュしなければならない頻度を判断する必要があります。
基本となるデータの変更頻度 データに対して頻繁な変更や大規模な変更が行われると、手動ビューが古くなります。データの最新性が重要な場合は、即時ビューの使用を検討します。
リフレッシュのコスト 各マテリアライズドビューの基本となるクエリの複雑さや関係するデータの量に応じて、リフレッシュに必要な計算のコストが非常に高くなることがあります。そのためマテリアライズドビューが頻繁にリフレッシュされると、データベースサーバーが耐えられないほどの負荷がかかる可能性があります。さらに、マテリアライズドビューはリフレッシュ操作中は使用できません。
アプリケーションのデータ最新性の要件 データベースサーバーが古いマテリアライズドビューを使用すると、アプリケーションに対して古いデータを提示することになります。古いデータは、基本となるテーブル内のデータの現在の状態を表していません。古さの程度は、マテリアライズドビューがリフレッシュされる頻度によって決まります。高いパフォーマンスを実現するために、許容できる古さの程度を判断するようにアプリケーションを設計する必要があります。
データの一貫性の要件 マテリアライズドビューをリフレッシュするときは、マテリアライズドビューをリフレッシュしなければならない一貫性を判断する必要があります。
最適化の使用 クエリの実行時にオプティマイザーがマテリアライズドビューを検討することを検証してください。特定のクエリで使用されるマテリアライズドビューのリストは、Interactive SQL でクエリのグラフィカルなプランの [高度な詳細] ウィンドウで確認できます。
また、Sybase Central でアプリケーションプロファイリングモードを使用して、オプティマイザーで列挙されたアクセスプランを確認することで、クエリの列挙フェーズでマテリアライズドビューが検討されたかどうかを判断できます。トレーシングはオンにする必要があります。また、オプティマイザーによって列挙されるアクセスプランを確認できるように、OPTIMIZATION_LOGGING トレーシングタイプを含めるように設定してください。
データ変更操作 マテリアライズドビューは読み込み専用であるため、データ変更操作 (INSERT、LOAD、DELETE、UPDATE など) を適用できません。
キー、制約、トリガー、アーティクル マテリアライズドビューのインデックスは作成できますが、キー、制約、トリガー、またはアーティクルを作成することはできません。
マテリアライズドビューとビューの依存性
再表示タイプの手動または即時への設定
マテリアライズドビューの制限
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |