
SELECTのSQLのパフォーマンスチューニングを行なっています。
例えば、A,B,Cと3本の候補があってA,B,Cの順に速度を見たいとき
B以降はAによるキャッシュを利用して実行するはずなので、
この3つの実行速度がうまく比較できません。
(頻繁に投げられるSQLではないので、アプリ側から投げられるときは
キャッシュにのっていない想定です)
SQLを投げるたびに
ALTER SYSTEM FLUSH BUFFER_CACHE ;
でキャッシュをクリアすれば、3つを比較できるのでしょうが、
運用上の問題でそれもできません。
理想としては
SELECT /*+ NOT_USE_CACHE*/ …
のようにヒント句や
alter sessionなどでキャッシュを使わずにSQLを投げたいのですが、
どのようにしたら実現できるでしょうか?
環境は
9iと11gの環境がありますので、
それぞれで最適な方法がございましたらご教授ください。
よろしくおねがいします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
1つ確認ですが、SQL-AとSQL-BとSQL-C、それぞれの処理速度を厳密に比較したいという事ですよね?
であれば、それぞれのSQLを実行する前に、DBを再起動する必要があると思います。
SQLを実行すれば、どうしてもデータはキャッシュにのってしまいます。
なので、DBを再起動して、完全にまっさらな状態にする必要があります。
「運用上それが出来ない」となれば、その環境と同じ環境を別に用意して、そこでテストを行うしか無いと思います。
ちなみに、No1の回答者さんが示したURLは、OracleBIを使用している場合の説明ですね。
No.2
- 回答日時:
「システムのキャッシングの無効化」を行った場合、該当のSQL内でのキャッシングも無効になる影響は考えられませんか。
例えば、インデックスのRANGEスキャンを行う場合、通常ならルートやブランチブロックはキャシュされますが、キャッシングを全面的に無効にするとDISKアクセスが頻発する気がします。
No.1
- 回答日時:
7.6.1.1 システムのキャッシングの無効化
http://docs.oracle.com/cd/E28389_01/bi.1111/b630 …
この辺は如何でしょうか。
ALTER SYSTEM FLUSH BUFFER_CACHE;
が使えない理由が、キャッシュを後で使うから、とかであった場合、
この方法で一時的にキャッシュ無効化⇒後で有効化でいける気がします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Viewにインデックスは張れますか?
Oracle
-
ORA-01013のエラーについて経験のある方お願いします。
Oracle
-
同じSQL文で極端に検索が遅くなる時がある
MySQL
-
-
4
GROUP BYを行った後に結合したい。
Oracle
-
5
Oracle 2つのDate型の値の差を「分」で取得したい
その他(データベース)
-
6
ウォッチ式の文字数制限について
Visual Basic(VBA)
-
7
Oracleでの文字列連結サイズの上限
Oracle
-
8
実行計画の「COST」と「BYTE」について教えていただきたいです。
Oracle
-
9
WHERE句の実行順序
Oracle
-
10
Statement ignored というエラー
Oracle
-
11
データを削除しても表領域の使用率が減りません
Oracle
-
12
TOPコマンドで表示するCPU使用率で100%以上の表示について
UNIX・Linux
-
13
OracleのSQL*PLUSで、データが折り返されて見づらいのですが。。。
その他(データベース)
-
14
含まない言い方ってどうしたらいいんでしょうか
日本語
-
15
SQL Plus での処理が重い
Oracle
-
16
異なるスキーマからデータを抽出するには?oracl、PL/SQL
Oracle
-
17
3つ以上のテーブルをUNIONするのは現時的でないでしょうか?
MySQL
-
18
テーブルの最後(最新)のレコードを抽出したい
MySQL
-
19
IF関数で空欄(")の時、Nullにしたい
その他(Microsoft Office)
-
20
主キーの変更
Oracle
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
キャッシュを使わずにSELECTを...
-
あいまい検索のパフォーマンス...
-
WHERE句の実行順序
-
【チューニング】インデックス...
-
ヒント句が無効になります
-
実行計画HASH JOIN RIGHT OUTER
-
Like文の速度について教えてく...
-
likeとsubstrの使いわけについて
-
Statement ignored というエラー
-
Accessのマクロでモジュールを...
-
Access VBAで行ラベルが定義さ...
-
sqlplusでヘッダーが付かない
-
DBMS_OUTPUT.PUT_LINEを実行し...
-
callで順に実行されるプロシー...
-
カーソル定義での条件分岐
-
sqlplusのspoolで空白行出現
-
SQLの結果に納得できません。ど...
-
ROW_NUMBER()を使用したデータ取得
-
ストアドプロシジャからストア...
-
DB2のSELECTでカンマ編集につい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
キャッシュを使わずにSELECTを...
-
WHERE句の実行順序
-
likeとsubstrの使いわけについて
-
SQL ORDER BYにおける条件について
-
あいまい検索のパフォーマンス...
-
ヒント句が無効になります
-
WHERE句はJOIN結合前結合後どち...
-
【チューニング】インデックス...
-
アナライズでほとんどの処理が...
-
Like文の速度について教えてく...
-
いつもお世話になってます。
-
実行計画(EXPLAIN PLAN、AUTOT...
-
実行計画HASH JOIN RIGHT OUTER
-
DATE型カラムのインデックスが...
-
TeXの索引作成に関して
-
Selectの処理速度改善について
-
Oracleで検索すると、フリーズ...
-
INDEX作成による更新系の影響範囲
-
データ抽出の速度について
-
Analyzeとは?
おすすめ情報