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も見ています
-
字面がカッコいい英単語
あなたが思う「字面がカッコいい英単語」を教えてください。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
同じSQL文で極端に検索が遅くなる時がある
MySQL
-
Viewにインデックスは張れますか?
Oracle
-
ORA-01013のエラーについて経験のある方お願いします。
Oracle
-
-
4
1回目の実行に3分、2回目の実行に3秒のSQLで1回目を早くする方法ありますか?
MySQL
-
5
SQLPLUSで結果を画面に表示しない
Oracle
-
6
SQL*Plusで、コマンドの返答を非表示にする方法
Oracle
-
7
最大バイト数を調べるSQL文を教えてください
Oracle
-
8
group byの並び順を変えるだけで結果が異なる
Oracle
-
9
SELECT INTOで一度に複数の変数へ代入をするにはどのようにすれがよいでしょうか?
PostgreSQL
-
10
異なるスキーマからデータを抽出するには?oracl、PL/SQL
Oracle
-
11
Winmerge ファイルの中身は同じなのに黄色くなる
その他(OS)
-
12
キャッシュを無効にする方法は?
SQL Server
-
13
truncate tableを使って複数のテーブルを指定する方法
Oracle
-
14
eclipseのデバッグ中に変数の値(長い文字列)を確認したい
Java
-
15
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
16
オラクルのUPDATEで複数テーブル
Oracle
-
17
SQL Plusで項目名が最後まで表示されない?
Oracle
-
18
Statement ignored というエラー
Oracle
-
19
update文で改行を入れる
Oracle
-
20
ヒント句が無効になります
Oracle
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
キャッシュを使わずにSELECTを...
-
SQL ORDER BYにおける条件について
-
アナライズでほとんどの処理が...
-
WHERE句の実行順序
-
Access VBAで行ラベルが定義さ...
-
重複するIDのデータを1行にま...
-
Accessのマクロでモジュールを...
-
ストアド実行時のエラー「参照...
-
VBA プロシージャの名前の取得
-
Oracle 10g 他スキーマの参照権...
-
PL/SQLでSPOOLさせたいのですが...
-
SQL*Loaderでのsysdate使用
-
sqlplusのspoolで空白行出現
-
VB.NET Type.GetFieldsメソッド...
-
Excel:ThisWorkbookオブジェク...
-
ExcelのSUMPRODUCTで日付の範囲...
-
Oracle 10gで順序sequenceの作...
-
sqlplusでヘッダーが付かない
-
OutlookVBAで作成したマクロに...
-
Statement ignored というエラー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
キャッシュを使わずにSELECTを...
-
WHERE句の実行順序
-
likeとsubstrの使いわけについて
-
問題解決のストーリーにて PDCA...
-
ヒント句が無効になります
-
実行計画HASH JOIN RIGHT OUTER
-
SQL ORDER BYにおける条件について
-
アナライズでほとんどの処理が...
-
Like文の速度について教えてく...
-
あいまい検索のパフォーマンス...
-
ORACLEでwhere句の検索順序
-
JOINの時のONとWHEREの違いにつ...
-
oracleのanalyzeと処理時間につ...
-
WHERE句はJOIN結合前結合後どち...
-
【チューニング】インデックス...
-
計画段階での怠惰
-
PDCAを回すって?
-
外部結合と等価結合のパフォー...
-
DATE型カラムのインデックスが...
-
Analyzeとは?
おすすめ情報