- - PR -
Oracleチューニング SQLの解析・実行について
1
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-03-25 09:54
おふぃすこまと申します。
現在Oracle9iR2 でパフォーマンスチューニングを行っています。 (統計にはSTATSPACKを使用しています。) 何度かメモリ増強とテストを繰り返し、インスタンス効率の 『Buffer Hit』や『Library Hit』をほぼ100%にしました。 ところが、『Execute to Parse』がマイナス50%と極端に低くなってしまいました。 当初はメモリ不足かと考えましたが、メモリを増やせば増やすほどマイナス値が大きくなります。 (ちなみに、今は共有プールが1G、バッファキャッシュが2Gあります。) Oracle のリファレンスを見る限り、値の計算式は 『1−(解析回数/実行回数)』となっています。 この値がマイナスという事は、実行よりも解析の回数が多い事になります。 そこでご質問なのですが、そもそも 「解析回数>実行回数」になる事なんてありえるのでしょうか? 私の認識だと、SQLを発行→解析→実行という流れです。 さらに、既に解析済みのSQLの場合、解析を飛ばして実行する・・・・。 つまり、「解析回数>実行回数」という式が有りえないと思うのですが・・・。 | ||||||||
|
投稿日時: 2005-03-25 11:07
ども。
操作するデータ量が少ないとあっというまに 100% の 値になりますが、どのくらいのデータ量で実際に SQL で アクセスされるデータ量はそのうち何割くらいだったの でしょう? # select * from emp なんちゅーことはなかろと思いますが。
もしかして、間にインスタンスの再起動をおこなっていませんか? # むかーしむかし、bstat/estat を取っている間に再起動してしまうと # マイナスの値になったことがありますが。 | ||||||||
|
投稿日時: 2005-03-25 12:48
おふぃすこまです。
>もしもしさん レスありがとうございます。
データウェアハウスのシステムで使用するサーバーなので、検索条件は様々です。 テスト時は主に2つの表を検索し、それぞれは下記のような作りになっています @データ件数約60万件 サイズ 700M Aデータ件数約20万件 サイズ 400M このデータから1件だけ取り出すSQLもあれば、全件取り出すSQLもあります。 もちろん取り出す項目数(列数)も様々です。 そのSQL群をある一定時間の間に並列で大量に実行し、統計を取得しています。
テスト中はインスタンスの再起動は行っていません。 | ||||||||
1
