direct path readを強制するHINTについて [オプティマイザ]

最近特に寒い。相変わらずExadataの性能遅延と戦っている。

以前direct path readについて記事を書いたが、その続きを記載する。

現実逃避がてら、Oracle Communityでダイレクトパスリードを指定するHINTの導入をアイディアとして投稿してみた。

hint to enforce FULL SCAN with direct path read
https://community.oracle.com/ideas/23746

---
Parallel hint can be used for enforcing direct path read, but there's no hint for serial direct path read.
Serial direct path read is hard to control; it depends on several factors such as;
- FULL SCAN
- segment size and buffer cache size
- the num of blocks cached on buffer cache
Besides, the above logic is not written in manual and different from version to version.

So I would like to propose adding a hint like "FULL_DIRECT_PATH( emp )" to enforce FULL SCAN with direct path read.
This could be not only used to enforce optimizer serial direct path read but also ensuring smart scan on Exadata.
----

Oracle ACEの方からは早速このアイディアに対して_serial_direct_readパラメータがあるのにHINTいるの?というツッコミを貰った。確かに以下のようにセッションレベルで変更できる。

alter session set "_serial_direct_read"=always;

ただ、もしHINTがあったとすれば、以下のようなメリットがあるのでは?とコメントした。
・セッションレベルでなくSQLレベルで制御できること
・複数の表を結合する場合、特定の表だけを指定することができる
・きちんとマニュアルに記載される(隠しパラメータはMOSだけ)

なお、1点目に関してはopt_param('_serial_direct_read','always') が使えれば解決する。しかし、私の手元の環境(12.2)ではなぜかうまく動いてくれなかった。指定の仕方が良くないのかもしれないが原因不明のままである。

このアイディアに対しては、今のところこのOracle ACEの方からのみの投票。仕組みがよくわかってないのだが、投票は+10ポイント、否決票は-10ポイントという形で投票していくようである。トップアイディア見ると6,000ポイント以上集まっているが、これがたまっていくと、将来もしかすると機能拡張されたりするのか?と思うと少しモチベーションがあがる。

といっても、今20ポイントなので、見込み薄ではあるが。

以上
nice!(1)  コメント(0) 

nice! 1

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。