先日、ORACLEのチューニング作業を行った際に携わった、ANALYZEコマンドについて触れたいと思います。
ANALYZEコマンドでは、統計情報(データベースや表、索引の特性など)の収集を行います。
テーブルを更新していくと統計情報が古くなるため、ANALYZEコマンドを行うことで情報収集をしなおして、最適な実行計画が立てられる可能性があります。
(ただし、統計情報がないほうが最適な実行計画になる場合もあるようですので、実行計画の確認が必要です。)
コマンドの記述については以下になります。
1 2 3 4 5 |
EXECUTE DBMS_STATS.UNLOCK_TABLE_STATS('スキーマ名','テーブル名'); ANALYZE TABLE 'テーブル名' COMPUTE STATISTICS; EXECUTE DBMS_STATS.LOCK_TABLE_STATS('スキーマ名','テーブル名'); |
・既に統計情報をロックされている場合は、analyze tableコマンド(3行目)を実施する前に、ロックを解除します。(1行目がロック解除、5行目がロック実施)
尚、統計情報が最終更新日を確認するSQLは以下になります。
1 2 3 4 |
select table_name ,to_char(last_analyzed,'YYYY/MM/DD HH24:MI:SS') as last_analyzed from user_tables where table_name = 'テーブル名'; |
以上です。
参考サイト:津島博士のパフォーマンス講座