ALL_TAB_MODIFICATIONS
Oracle11gでは、DBMS_STATS.FLUSH_DATABASE_MONITORING_INFO を叩かないといつ反映されるかわからないものだったが、
Oracle12c リリース2 からは、叩かなくてもリアルタイムに更新されるようになった。
ALL_TAB_MODIFICATIONS から、前回統計情報を取得した時より後のテーブルへの INSERT/UPDATE/DELETE 件数を知ることが出来る。
統計情報取得日時は、ALL_TABLES.LAST_ANALYZED 見ればわかるので、ある2つの時点でその情報を取っておけば、その期間の処理件数の大まかなものはわかる。
実際に見てもふーんと思ったのは次の点
・コミットしなくてもカウントアップされる
逆に言うとロールバックしても値は減らない。
・TRUNCATE すると INSERT の件数と同値が DELETE にせっていされる
試さなかったが、同じレコードを何回更新しても UPDATEのカウンタは上がっていくと思われる。
ALL_TAB_MODIFICATIONS を見て自動の統計情報取得実行有無を決めているはずだから、意外といいかげんに取得が行われるようだ。
Oracle12c リリース2 からは、叩かなくてもリアルタイムに更新されるようになった。
ALL_TAB_MODIFICATIONS から、前回統計情報を取得した時より後のテーブルへの INSERT/UPDATE/DELETE 件数を知ることが出来る。
統計情報取得日時は、ALL_TABLES.LAST_ANALYZED 見ればわかるので、ある2つの時点でその情報を取っておけば、その期間の処理件数の大まかなものはわかる。
実際に見てもふーんと思ったのは次の点
・コミットしなくてもカウントアップされる
逆に言うとロールバックしても値は減らない。
・TRUNCATE すると INSERT の件数と同値が DELETE にせっていされる
試さなかったが、同じレコードを何回更新しても UPDATEのカウンタは上がっていくと思われる。
ALL_TAB_MODIFICATIONS を見て自動の統計情報取得実行有無を決めているはずだから、意外といいかげんに取得が行われるようだ。
この記事へのコメント