« eclipse でjava classファイルの逆コンパイル | トップページ | SQL パフォーマンスチューニング[一時保存] »

SQL パフォーマンスチューニング

oracle/パフォーマンスチューニング

SQLのパフォーマンスチューニングでちょこっと調べたりしたこと。
備忘録です。
引用元↓↓↓↓
http://enterprisezine.jp/article/detail/30

実行計画とは…
引用ここから----->
>実行計画とは、SQL文を実行するために順番に実行される一連の操作手順のことです。サーバープロセスは実行計画に従って、SQL文を実行していきます。実行計画の中では、例えば索引を使用するのか(もしくは使用しないのか)、2つの表を結合させて検索する場合にどちらの表を先に検索するのか、結合にはどの方法を使用するのか、といったことが示されています。
>この実行計画は「オプティマイザ」によって作られます。オプティマイザとはSQL文を解析してデータを最も効率的に検索できる方法を探し、処理の順序を決定するエンジンです。Oracleは、「ルールベース」と「コストベース」という2種類のオプティマイザを持っています。
<-----引用ここまで

更にルールベースとコストベースの違いについても以下引用。
引用ここから----->
>ルールベースオプティマイザ
>ルールベースとは、あらかじめ決められたルールに基づいて最適化された実行計画を作成する方法です。SQL文の内容(書き方)によって、適用されるルールが変化します。そのため、実行効率の良いSQL文の書き方を考慮することが必要です。
>ルールベースのメリットは、例えば索引があったら索引を使うなど、動作が直感的で分かりやすい点です。一方で、データの状況によっては索引を使用しないほうが検索が速い場合にも、必ず使用されてしまうなどのデメリットがあります。そのため、使用は推奨されていません。
>Oracleのルールベースオプティマイザは、バージョン7.2で仕様が凍結されており、バージョン7.3以降のパーティション表や索引構成表など、いくつかの機能を使用できません。また、Oracle DB 10gではサポート外となっています。

>コストベースオプティマイザ
>コストベースとは、統計情報(後述)を基に各アクセス方法のコスト(処理の負荷)を計算して、最もコストが低い実行計画を選び出す方法です。通常、データベースのデータは時間が経つにつれて増えていきますが、その値に偏りが生じていく場合があります。コストベースオプティマイザは、データの内容に応じて最適な実行計画をその都度検討してくれます。これにより、ルールベースで問題であった「索引を使うとかえって遅くなる」ケースでは、索引を使用しない実行計画を生成します。
>ただし、コストベースでは正確な統計情報がないと、最適な実行計画が生成されません。そのため、統計情報を定期的に更新する必要があります。
<-----引用ここまで

…で、Oracle10gではルールベースがサポート外ってことはコストベースが採用されてるってことなんですね。
てことで、統計情報を定期的に取らないといい感じにならないよ、てことなんですね……!
既存システムからのデータ移行で一気に7万件もデータ突っ込んでるのに統計情報を取り直してないのが悪いと、そう仰るのですね……!それで良いのかなあ。また何か分かったら追記します。

|

« eclipse でjava classファイルの逆コンパイル | トップページ | SQL パフォーマンスチューニング[一時保存] »

oracle」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: SQL パフォーマンスチューニング:

« eclipse でjava classファイルの逆コンパイル | トップページ | SQL パフォーマンスチューニング[一時保存] »