マテリアライズドビューのリフレッシュ時にSELECTするとどうなるか。

ここでは、ORACLEのマテリアライズドビューのリフレッシュを行っているときに、そのマテリアライズドビューに対しSELECT文を実行するとどうなるか紹介します。

マテリアライズドビューのリフレッシュには、いくつかのオプションがありますが、デフォルトでは、DELETE-INSERTで別のトランザクションとして実行されます。

イメージ的には、DELETE-INSERTが正常に完了すると、コミットされデータが反映されるイメージです。

つまり、リフレッシュ実行中にSELECT文で実行されても、エラーにはなりません。参照できるデータは今現在マテリアライズドビューに存在するデータで、変更中のデータが参照されることはありません。

ただし、リフレッシュにはオプションがあり、truncate-insertにすることもできます。この場合は、先ほどとは違って、truncateが実行されている間にデータを参照するとデータが0件で表示されます。

DBMS_MVIEWでrefreshプロシージャでatomic_refreshというオプションで指定されます。これがTUREの場合は、DELETE-INSERT、FALSEの場合は、truncate-insertとなります。マテビューのリフレッシュが気になる際は、ぜひご確認ください。

ちなみに、マテビューのチューニングでお悩みの方は「マテリアライズドビューが遅いときの原因とチューニング方法」をご覧ください。

オラクルマスター教科書Oracle Database Gold 12(トゥエルブ(新機能編) iStudyオフィシャルガイド [ 代田佳子 ]

価格:6,696円
(2018/11/19 19:20時点)

マテリアライズドビューのリフレッシュ時にSELECTするとどうなるか。” に対して1件のコメントがあります。

この投稿はコメントできません。