소트와 해쉬 오퍼레이션은 3가지 모드로 수행
오라클 9i부터 V$SESSTAT과 V$SYSSTAT 뷰에 4가지 성능지표 추가
수행 모드 분석 Script
select name profile, cnt, decode(total, 0, 0, round(cnt*100/total)) percentage
from (select name, value cnt, (sum(value) over ()) total
from v$sysstat
where name like 'workarea exec%')
-- 소트 테스트용 (1만 건씩 증가하면서 수행)
declare
i number := 0;
v_spat number := 0;
v_tcnt number;
v_pval number;
q_str1 varchar2(1000);
begin
i := 90000;
while i < 300000 loop
i := i+10000;
i := i+10000;
q_str1 :='select count(*) from (select * from t1 where rownum <= '||i||' order by id)';
execute immediate q_str1 into v_tcnt;
end loop;
end;
/
-- v$sql_workarea 뷰를 이용한 소트 activity 확인
SQL>@getworkarea
==> Page 261 수행 결과 참조
-- 해쉬 테스트용 (1만 건씩 증가하면서 수행)
declare
i number := 0;
v_spat number := 0;
v_tcnt number;
v_pval number;
q_str1 varchar2(1000);
begin
i := 190000;
while i < 400000 loop
i := i+10000;
q_str1 :='select count(*) from (select /*+ ordered use_hash(t1 t2) */ t1.* from (select * from t1 where rownum<'||i||' ) t1, (select * from t1 where rownum<=10000) t2 where t1.id=t2.id)';
execute immediate q_str1 into v_tcnt;
end loop;
end;
/
-- v$sql_workarea 뷰를 이용한 해쉬 activity 확인
SQL>@getworkarea
==> Page 262 수행 결과 참조
==> Page 263 이미지 참조