Search

OakieTags

Who's online

There are currently 0 users and 31 guests online.

Recent comments

Affiliations

_db_file_direct_io_count で安定稼動

前回db_file_multiblock_read_count=64のとき、安定しない結果に終わった。
そして「ディスク転送量+アルファ」の何かがあると書いた。

_db_file_direct_io_count : Sequential I/O buf size

今回のテストはBLOCK_SIZE=8K=8192Bでテストをしている。
このI/O buffer sizeを最適化してからテストを再度行う:

db_file_multiblock_read_count = 64, _db_file_direct_io_count = 524288

db_file_multiblock_read_count = 128, _db_file_direct_io_count = 1048576
db_file_multiblock_read_count = 256, _db_file_direct_io_count = 2907152
db_file_multiblock_read_count = 512, _db_file_direct_io_count = 4194304db_file_multiblock_read_count = 1024, _db_file_direct_io_count = 8388608

結果db_file_multiblock_read_count = 64でも安定した。そして128のときと比べて、ほぼ同じ。

direct path readは、そのバッファサイズを最適化しておかないと無駄なTemporaryアクセスを発生する。
それを踏まえてdb_file_multiblock_read_countを調整する。
DWHだからって「むやみにdb_file_multiblock_read_countを増やせばよい」ではない。
因みに、Exadata1のTPC-Hベンチマークでは:
db_file_multiblock_read_count=64
db_block_size=32K
を設定している。

最後に、
_db_file_direct_io_countの設定はdb_file_multiblock_read_countと必ず対応しなければなりません。たとえば、multiblock_read_cnt=512なのに、この値を1024対応のものにすると最適化されなくなり、ディスク応答時間に影響します。今回の例ですとBlockSize=8K=8192。それにmultiblock_read_cntを掛けて算出しています。
因みに、これらは_adaptive_direct_read = TRUEで制御されているみたいです。