マテリアライズドビューの代わりにテーブルを使用しないのはなぜですか?


53

Oracleデータベースは初めてです。私が正しく理解している場合、マテリアライズドビューは結果セットがデータベースの物理テーブルとして保存されているビューであり、このビュー/テーブルは何らかのパラメーターに基づいて更新されます。ビューが物理テーブルとして保存されている場合、最初にテーブルにデータを保存してみませんか?それでは、テーブルの代わりにマテリアライズドビューを使用する利点は何ですか?

回答:


59

マテリアライズドビューを使用する最大の利点の1つは、Oracleがデータの同期を維持することです。別の集計テーブルがある場合は、データの同期を維持する責任があります。一般に、適切な量のコードと十分な量のテストが必要であり、ほとんどの組織は、ミスを犯して、集計テーブルが同期しなくなるホールを残します。これは、集計テーブルの増分更新を実装しようとする場合に特に当てはまります。

もう1つの主な利点は、設定に応じて、ユーザーがベーステーブルに対してクエリを発行するときに、クエリリライトを使用してマテリアライズドビューを使用できることです。そのため、たとえば、日次、月次、年次の集計結果を生成する詳細テーブルに対する既存のレポートがたくさんある場合、日次レベルでデータを集計するマテリアライズドビューを作成でき、オプティマイザーはそのマテリアライズドビューを既存のすべてのクエリに使用します。これにより、新しい集計テーブルを使用したりDBMS_ADVANCED_REWRITE、クエリの書き換えを強制的に行ったりするために多数のレポートを書き直そうとすることなく、データウェアハウスのレポートワークロードを最適化できます。


14

マテリアライズドビューは、ベーステーブルが更新されると自動的に更新されます。


1
これON DEMANDがデフォルトのリフレッシュ動作であることに注意してください。マテリアライズドビューはで作成する必要がありますON COMMIT。マテリアライズドビューの維持は無料ではありません。ただし、おそらくトリガーよりも安価です。
デュレット

10

MVを使用する1つの良いケースは、データを集約し、大規模なテーブルからこのサマリー情報を頻繁かつ迅速に取得したい場合があることです。マテリアライズドビューがない場合、テーブルの一部を非正規化し、コードを介して集計を維持するか、大きな行セットを繰り返しスキャンする必要があります。ダッシュボードや同様のオンラインアプリケーションでは、どちらの方法も特別に受け入れられるとは限りません。結果を別のテーブルに保存すると、アプリケーションコードが複雑になり、@ Justin Caveが言うように、手動で集約されたデータが同期していることを確認する責任があります。元のテーブルのデータを使用します。


4

オラクルの人ではなく、別のユースケースはサードパーティのソリューションです。通常、設計の変更はサポートしていませんが、MVはコードからは「見えない」が、カスタムレポート/データ抽出へのアクセスを提供します。

ストレージコストと潜在的に影響のある挿入/更新時間のコストがかかるという点で無料ではありませんが、マテリアライズデータの取得と「ストレートビュー」または実際のテーブルの作成と周囲のETLの維持に費やされる時間で相殺される可能性があります。

最後に、そうすると、ベンダーとのサポート契約が無効になる場合があります。


2

マテリアライズドビューに直接移動する代わりに、ビューについて説明します。

基本的に、ビューはテーブルとは異なり論理的に存在します。特定の列をユーザーに対して非表示にする場合、テーブルを使用することはできません。ビューを作成すると、セキュリティを実現できます。

ユースケース:ビューがグループ化とともに10個のテーブルと内部的に関連付けられており、関数に数百万行がある場合、実行に時間がかかります。

マテリアライズドビューは、データの取得を高速化するのに役立ちます。マテリアライズドビューは物理的にデータベースに存在します。ベーステーブルが更新されるたびに、マテリアライズドビューが更新されます。

マテリアライズドビューは、クエリ定義に基づいて定期的に更新されますが、テーブルではこれを実行できません。


0

マテリアライズドビューは、定期的に自動的に更新されるように設定できます。テーブルには、データの切り捨て/リロードのために追加のコードが必要になる場合があります。

例:複数のテーブルからのデータを持つマテリアライズドビューは、ピーク時以外に自動的に更新するように設定できます。物理テーブルには、データを切り捨て/リロードするための追加コードが必要です。

セキュリティは、テーブルではなくマテリアライズドビューでより適切に制御できます。


0

マテリアライズドビューは、クエリの結果を含むデータベースオブジェクトです。それらは、リモートにあるデータのローカルコピーであるか、テーブルのデータの集計に基づいてサマリーテーブルを作成するために使用されます。 http://www.oraappdata.com/2016/04/materialized-view.html


1
質問は、具体化されたビューとは何かではなく、その使用理由と方法に関するものであることに注意してください。
きらめき
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.