SYS_OP_COUNTCHG | |
Counts the number of blocks in a table but the results between these two methods were different when tested with sys.tab$ and very different from looking at BLOCKS in dba_tables and dba_segments. |
SYS_OP_COUNTCHG(rowid, integer_between_1_and_255) |
conn uwclass/uwclass SELECT COUNT(DISTINCT dbms_rowid.rowid_block_number(rowid)) FROM airplanes; SELECT sys_op_countchg(SUBSTRB(ROWIDTOCHAR("AIRPLANES".ROWID),1,15),1) FROM airplanes; EXPLAIN PLAN FOR SELECT COUNT(DISTINCT dbms_rowid.rowid_block_number(rowid)) FROM airplanes; SELECT * FROM TABLE(dbms_xplan.display); EXPLAIN PLAN FOR SELECT sys_op_countchg(SUBSTRB(ROWIDTOCHAR("AIRPLANES".ROWID),1,15),1) FROM airplanes; SELECT * FROM TABLE(dbms_xplan.display); -- note the difference between the plans. |
클러스터링 팩터
TABLE_NAME BLEVEL LEAF_BLOCKS CLUSTERING_FACTOR NUM_ROWS DISTINCT_KEYS
------------------------------ ---------- ----------- ----------------- ---------- --
T2 2 5781 2499738 2500000 2500000
ex)
select /*+ cursor_sharing_exact
dynamic_sampling(0)
no_monitoring
no_expand
index(T2,"T2_IDX")
noparallel_index(T2,"T2_IDX")
*/ sys_op_countchg(SUBSTRB(ROWIDTOCHAR("T2".ROWID),1,15),5)
FROM PROC3.T2
WHERE "A" is not null;
dynamic_sampling(0)
no_monitoring
no_expand
index(T2,"T2_IDX")
noparallel_index(T2,"T2_IDX")
*/ sys_op_countchg(SUBSTRB(ROWIDTOCHAR("T2".ROWID),1,15),5)
FROM PROC3.T2
WHERE "A" is not null;
SYS_OP_COUNTCHG(SUBSTRB(ROWIDTOCHAR("T2".ROWID),1,15),5)
--------------------------------------------------------
166998
이전의 방문한 블럭만 참조하는 클러스터링 팩터의 계산을 보정할때 사용한다.
sys_op_countchg 함수를 사용하여 이전의 방문한 블록의 목록의 일부를 저장하여 비교사용한다.
따라서 숫자에(빨간색표시) 값에 따라서 블록 목록의 윈도우가 정해지며,
값이 높을수록 클러스터링 팩터는 줄어들게 된다.
클러스터링 팩터는 메모리 사용량과도 관련이 있으므로 ( 디스크 성능 등 복합적인 튜닝 요구됨 ) , 너무 높은 값으로 하는것은 의미가 없다.
조정 값의 Max 값은 255
댓글 없음:
댓글 쓰기