Slide 29
Slide 29 text
パフォーマンス比較 (参照LOB、値LOB、VARCHAR32K) のまとめ
値LOB
• ARRAYSIZEが効く (ROWPREFETCHが効く)
VARCHAR32K
• ARRAYSIZEが効く (ROWPREFETCHが効く)
参照LOB
• ARRAYSIZEが効かない (LOBロケータを渡してから
LOB値にアクセスする)
• LOBPREFETCHの設定でARRAYSIZEが効く
• LOBをプリフェッチすることでロケータと一緒に転送する
• “bytes received via SQL*Net from client”が多い
• Oracle Net Servicesを介してクライアントから受信したバイト
• 値LOBはLOBデータを直接提供しているため行き来す
る通信が少ない (CPU時間も少ない)
• LOB情報とデータ挿入
読取り専用の値LOB (Read-Only Value LOBs)
Copyright © 2024, Oracle and/or its affiliates
39
SQL> select TABLE_NAME, COLUMN_NAME, SEGMENT_NAME, CACHE,
SECUREFILE, VALUE_BASED
from user_lobs;
TABLE_NAME COLUMN_NAME SEGMENT_NAME CACHE SEC VAL
---------- ----------- ------------------------- ----- --- ---
T_REF C SYS_LOB0000097288C00002$$ NO YES NO
T_VAL C SYS_LOB0000097291C00002$$ YES YES YES
T_V32K C SYS_LOB0000098421C00002$$ YES YES NO
declare
l_clob clob := rpad('x',1024,'x');
begin
-- 64Kにサイズを拡張
for i in 1 .. 6 loop
l_clob := l_clob || l_clob;
end loop;
for i in 1 .. 36000 loop
insert into t_ref values (i, l_clob);
insert into t_val values (i, l_clob);
insert into t_v32k values (i,substr(l_clob,1,32767));
end loop;
commit;
end;
/