Database Tuning (チューニング)

DB Optimizer(オプティマイザ)

SQL を最も速く効率的に実行する最適な処理経路を生成する、DBMS 内部の中核エンジンである。

  • 種類
    • ルールベースオプティマイザ、コストベースオプティマイザ
  • 過程
    • ユーザーが投げたクエリを実行するため、候補となる実行計画を探す。
    • オブジェクト統計およびシステム統計情報を通じて、各実行計画の予想コストを算定する。
    • 各実行計画を比較し、最も低いコストを持つものを選択する。

ヒント(Hint)

  • ヒントとは、SQL をチューニングするための指示構文である。
  • オプティマイザが最適な計画で SQL 文を処理できない場合に、開発者が直接最適な実行計画を提供するものである。
  • ヒントは SELECT の後に記述でき、INDEX、PARALLEL などさまざまなヒント句がある。

データベースチューニングと方法

  • DB チューニングは、データベース構造やデータベース自体、オペレーティングシステムなどを調整し、データベースシステムの性能を向上させる作業を意味する。

  • チューニングは DB 設計チューニング > DBMS チューニング > SQL チューニングの段階で進められる。

1段階: DB 設計チューニング(モデリング観点)

  • チューニング方法
    • データベース設計段階で性能を考慮して設計
    • データモデリング、インデックス設計
    • データファイル、テーブルスペース設計
    • データベース容量算定
  • チューニング事例
    • 非正規化、分散ファイル配置

2段階: DBMS チューニング(環境観点)

  • チューニング方法
    • 性能を考慮してメモリやブロックサイズを指定
    • CPU、メモリ I/O に関する観点
  • チューニング事例
    • Buffer サイズ
    • Cache サイズ

3段階: SQL チューニング(APP 観点)

  • チューニング方法
    • SQL 作成時に性能を考慮
    • Join, Indexing, SQL Execution Plan
  • チューニング事例
    • Hash / Join