UJP - 技術情報

Life is fun and easy!

不正IP報告数

Okan Sensor
 
メイン
ログイン
ブログ カテゴリ一覧

     

クエリパフォーマンスの向上 〜Update statistics〜

クエリパフォーマンスの向上

〜Update statistics〜


0.更新履歴

  • 2001.11.06 新規作成

1.はじめに

 このドキュメントでは,Sybase ASE11.9.2にて,統計情報の更新を行い,アクセスパスの改善を行う方法について説明する.

2.統計値の管理の必要性

 インデックスが未設定のフィールドに対して,統計情報を追加すると,クエリパフォーマンスの向上が期待できる.
 Sybaseのオプティマイザは,統計値を元に,テーブルやインデックスのクエリのコストを見積もる.
 しかし,統計値が正確でない(古いまま等)であると,正確なコストが見積もれない.
 よって,適切なタイミングで統計情報をい更新する.

3.更新のタイミングについて

  統計値の更新は,クエリ中に更新されるもの,インデックス作成,update statistics実行時のみ更新されるものがある.

 マニュアルによると,インデックスのキー分布に変更があったとき等となっているが,1週間に1回とか,定期的に行ったほうが良いようである.

 また,Sybaseのサポートに連絡すると,統計値の更新(update statistics)を最後に行ったのはいつ?みたいな質問が出るそうである.

4.統計値の更新について注意

 統計値の更新には,以下のような処理負荷がかかる.

  • インデックススキャン
  • プロシージャを実行する
  • 共有ロック

 などの処理が行われるため,処理負荷の高い時間帯を避ける.

5.文法

 統計情報を更新するには,update statisticsコマンドを使用する.

 文法と効果は以下のとおりである.

コマンド 説明
update statistics  統計がない場合は統計を作成し,統計がある場合は新しく統計を作成する.
update statistics テーブル名  テーブル内にある各インデックスの統計を更新する.
update statistics テーブル名 インデックス名  インデックスの全カラムの統計値を更新する.
update statistics テーブル名(フィールド名)  指定されたフィールド分の統計値を更新.
update statistics テーブル名(フィールド名1,フィールド名2)  セット内の順番に複合インデックスの統計値を更新.
update index statistics テーブル名  テーブル上にある全インデックスのカラムの統計値の更新.
update index statistics テーブル名,インデックス名  このインデックスの全カラムの統計.
update all statistics テーブル名  テーブルの全カラムの統計.

6.統計情報を更新するカラムについて

 Sybaseのオプティマイザでは,where句やhaving句で指定されたフィールドの統計値を利用して最適なアクセスパスを考え出す.

 それらのフィールドにインデックスを設定していればいいのではないか? とおもわれるが,インデックスをつけると,大量更新が行われるような表の場合,インデックスの管理(更新)処理のコストが必要で,逆にパフォーマンスのボトルネックになることがあるらしい.

 よって,1つの方法として,次のようなパターンによって改善する事が考えられる.

  • where句やhaving句で指定するにもかかわらず,インデックスを指定しないでおく.
  • それらのフィールドには,update statisticsによって統計情報を更新しておく.



広告スペース
Google