- PR -

Oracleチューニング SQLの解析・実行について

1
投稿者投稿内容
おふぃすこま
常連さん
会議室デビュー日: 2005/01/24
投稿数: 22
投稿日時: 2005-03-25 09:54
おふぃすこまと申します。

現在Oracle9iR2 でパフォーマンスチューニングを行っています。
(統計にはSTATSPACKを使用しています。)

何度かメモリ増強とテストを繰り返し、インスタンス効率の
『Buffer Hit』や『Library Hit』をほぼ100%にしました。
ところが、『Execute to Parse』がマイナス50%と極端に低くなってしまいました。

当初はメモリ不足かと考えましたが、メモリを増やせば増やすほどマイナス値が大きくなります。
(ちなみに、今は共有プールが1G、バッファキャッシュが2Gあります。)

Oracle のリファレンスを見る限り、値の計算式は
『1−(解析回数/実行回数)』となっています。

この値がマイナスという事は、実行よりも解析の回数が多い事になります。

そこでご質問なのですが、そもそも
「解析回数>実行回数」になる事なんてありえるのでしょうか?

私の認識だと、SQLを発行→解析→実行という流れです。
さらに、既に解析済みのSQLの場合、解析を飛ばして実行する・・・・。

つまり、「解析回数>実行回数」という式が有りえないと思うのですが・・・。
もしもし
ぬし
会議室デビュー日: 2004/10/15
投稿数: 280
投稿日時: 2005-03-25 11:07
ども。

引用:

何度かメモリ増強とテストを繰り返し、インスタンス効率の
『Buffer Hit』や『Library Hit』をほぼ100%にしました。



操作するデータ量が少ないとあっというまに 100% の
値になりますが、どのくらいのデータ量で実際に SQL で
アクセスされるデータ量はそのうち何割くらいだったの
でしょう?

# select * from emp なんちゅーことはなかろと思いますが。

引用:

ところが、『Execute to Parse』がマイナス50%と極端に低くなってしまいました。



もしかして、間にインスタンスの再起動をおこなっていませんか?
# むかーしむかし、bstat/estat を取っている間に再起動してしまうと
# マイナスの値になったことがありますが。
おふぃすこま
常連さん
会議室デビュー日: 2005/01/24
投稿数: 22
投稿日時: 2005-03-25 12:48
おふぃすこまです。

>もしもしさん
レスありがとうございます。

引用:

操作するデータ量が少ないとあっというまに 100% の
値になりますが、どのくらいのデータ量で実際に SQL で
アクセスされるデータ量はそのうち何割くらいだったの
でしょう?



データウェアハウスのシステムで使用するサーバーなので、検索条件は様々です。

テスト時は主に2つの表を検索し、それぞれは下記のような作りになっています
@データ件数約60万件 サイズ 700M
Aデータ件数約20万件 サイズ 400M

このデータから1件だけ取り出すSQLもあれば、全件取り出すSQLもあります。
もちろん取り出す項目数(列数)も様々です。

そのSQL群をある一定時間の間に並列で大量に実行し、統計を取得しています。

引用:

もしかして、間にインスタンスの再起動をおこなっていませんか?



テスト中はインスタンスの再起動は行っていません。
1

スキルアップ/キャリアアップ(JOB@IT)