Gblog

おもにTips

LOB に対する I/O

すっかり buffer cache 経由でアクセスするものと思ってましたが、CACHE / NOCACHE で制御ができるらしい。

しかもデフォルト NOCACHE 。direct path read が一般的なよう。

 

とりあえず、動作確認だけ。

DISABLE STORAGE IN ROW で、NOCACHE CACHE を比較してみる。

drop user g cascade;
grant dba to g identified by g;
conn g/g
CREATE TABLE TEST1 (id number, c1 CLOB) LOB (c1) STORE AS SECUREFILE(DISABLE STORAGE IN ROW NOCACHE ) ;
CREATE TABLE TEST2 (id number, c1 CLOB) LOB (c1) STORE AS SECUREFILE(DISABLE STORAGE IN ROW CACHE ) ;

INSERT INTO TEST1 VALUES (1,rpad('x',4000,'x'));
INSERT INTO TEST2 VALUES (1,rpad('x',4000,'x'));
commit;

 

SELECT して SQL TRACE をとってみると、、、TEST1 はLOBセグメントに対して direct path read でアクセスしているが、TEST2 は、db file sequential read 。

 

ちなみに、マニュアルに CACHE / NOCACHE / CACHE READ のガイドラインがのっている。

 

知らんかった。。。