Files
oracle/vdh/big_table_read_perf.sql
2026-03-12 21:23:47 +01:00

64 lines
1.8 KiB
MySQL

set lines 150
set pages 9999
set feedback off
set echo off
select distinct sid from v$mystat;
alter system flush buffer_cache;
alter session set "_serial_direct_read"='always';
--exec dbms_monitor.session_trace_enable(waits => true)
DECLARE
l_cnt number;
l_start_value number;
l_end_value number;
l_diff number;
l_start timestamp;
l_end timestamp;
l_elapsed number;
l_throughput number;
BEGIN
select value
into l_start_value
from v$mystat mystat, v$statname statname
where mystat.statistic# = statname.statistic#
and statname.name = 'physical read bytes';
l_start := systimestamp;
select /*+ FULL(A) PARALLEL(A,10) */ count(*) into l_cnt from sysadm.COMLONG A;
-- select /*+ FULL(A) NOPARALLEL(A) */ count(*) into l_cnt from sysadm.COMLONG A;
-- select /*+ FULL(A) */ count(*) into l_cnt from c2mv5.hist_act A;
l_end := systimestamp;
select value
into l_end_value
from v$mystat mystat, v$statname statname
where mystat.statistic# = statname.statistic#
and statname.name = 'physical read bytes';
l_elapsed := extract(day from (l_end - l_start)) * 24 * 60 * 60
+ extract(hour from (l_end - l_start)) * 60 * 60
+ extract(minute from (l_end - l_start)) * 60
+ extract(second from (l_end - l_start));
l_diff := (l_end_value - l_start_value);
l_throughput := (l_diff/l_elapsed)/1024/1024;
dbms_output.put_line('physical MB read: ' || to_char(l_diff/1024/1024, '999G999G999D99'));
dbms_output.put_line('elapsed seconds: ' || to_char(l_elapsed, '9G999G999D99'));
dbms_output.put_line('measured throughput: ' || to_char(l_throughput, '999G999D99'));
END;
/
--exec dbms_monitor.session_trace_disable();