MySQL を使用したマテリアライズド ビュー
-
10-10-2019 - |
質問
MySQL でエミュレートされたマテリアライズド ビューはパフォーマンスが良いですか?のやり方を学んでいます このリンク
ありがとう
修正: 「マテリアライズド ビュー」から「エミュレートされたマテリアライズド ビュー」へ。
解決
MySQLには具体化されたビューがありません - リンクはテーブルを作成するだけでデータを詰めてテーブルをインデックス作成できます。つまり、パフォーマンスは通常のテーブルと同等ですが、テーブル(インデックスを含む)のフラッシングと再度のフラッシングと再度のオーバーヘッドもあります。
テーブルが使用していたエンジンがわかりませんでしたが メモリー おそらくより良い選択でしょう。
他のヒント
具体化されたビューは、いくつかの重いクエリからのデータを備えた通常のテーブルの派手な名前です。
したがって、それを作成することは重いクエリ自体と同じくらい重いですが、クエリのクエリは非常に高速です。
ここでの大きな問題は、どのようにビューを更新するかです。
- 定期的なフルリフレッシュを行うことができます。簡単ですが、その更新中と更新の間に、データは時代遅れです。
- トリガーを使用して、挿入/削除/更新時にデータを自動的に更新できます。これにより、他のテーブルの挿入/削除/更新がわずかに重くなりますが、時代遅れではありません。
Flexviews (http://flexvie.ws) は、オープンソースの PHP/MySQL ベースのプロジェクトです。Flexviews は、PHP とストアド プロシージャを使用して、段階的に更新可能なマテリアライズド ビュー (Oracle のマテリアライズド ビューなど) を MySQL に追加します。
これには、バイナリ ログを読み取る PHP ベースの変更データ キャプチャ ユーティリティである FlexCDC と、ビューの定義と維持に使用される Flexviews MySQL ストアド プロシージャが含まれています。
Flexviews は結合 (内部結合のみ) と集計をサポートしているため、集計テーブルの作成に使用できます。さらに、Flexview を Mondrian (ROLAP サーバー) の集計デザイナーと組み合わせて使用して、ROLAP ツールが自動的に使用できる集計テーブルを作成できます。