Oracle TimesTenの統計情報はどう運用すべきか?
Oracle TimesTenはコストベースオプティマイザを使用しているため、Oracle Databaseと同様に統計情報から実行計画を判断します。したがって、正しい統計情報を取得することが非常に重要と言えます。
「Oracle TimesTenを導入したのにパフォーマンスが全然出ない。」というトラブルのご連絡を受け、現場に駆けつけたら、統計情報が取得されていなかったというケースがよくあります。
Oracle TimesTenを快適に利用するためには、統計情報は絶対に取得してください。
統計情報の取得方法
Oracle TimesTenの統計情報は、下記の組み込みプロシージャを実行することによって取得できます。
・ttOptUpdateStatsプロシージャ(全体統計)
表に格納されている全てのデータを参照し、統計を収集します。したがって、表が大きい場合は、収集に時間が掛かる場合があります。
・ttOptEstimateStatsプロシージャ(見積統計)
表内の行をランダムにサンプリングすることによって統計を推定します。全体統計の計算と比べてかなり高速ですが、正確性は全体統計より劣るため、その実行計画は最適な計画に及ばない可能性があります。
推奨するのはもちろん全体統計ですが、システムにかかる負荷が高すぎたり、処理時間が長すぎてなかなか終わらなかったりする場合は、見積統計でも良いと思います。
データの増減が激しいシステムは定期的に統計を取得することが推奨されますが、コンサルが支援するお客様は安定稼働を重視されるお客様が多いので、統計情報は比較的固定するケースが多いです。
データ特性に大きな変動がないようなシステムにおいては、検証フェーズで本番相当のデータを準備して全体統計を取得していただき、性能試験で実行計画に問題がないことを確認していただいた上で、その統計情報のまま固定(再取得をしない)し、定期的に見直すような運用としていただくことをお奨めしています。