联系:QQ(5163721)
标题:Exadata上的HCC测试(EHCC)—2—:DBMS_COMPRESSION.GET_COMPRESSION_RATIO
作者:Lunar©版权所有[文章允许转载,但必须以链接方式注明源地址,否则追究法律责任.]
今天累了不多说了,官方文档都有:
使用DBMS_COMPRESSION时需要注意,不能两个会话同时使用,否则会报错,类似(2个会话会分别报下面的两个错误):
ERROR at line 1: ORA-00955: name is already used by an existing object ORA-06512: at "SYS.PRVT_COMPRESSION", line 774 ORA-06512: at "SYS.DBMS_COMPRESSION", line 214 ORA-06512: at line 26
* ERROR at line 1: ORA-08103: object no longer exists ORA-06512: at "SYS.PRVT_COMPRESSION", line 774 ORA-06512: at "SYS.DBMS_COMPRESSION", line 214 ORA-06512: at line 26
貌似从MOS还是哪里找到的脚本,很好用,其主要是利用了DBMS_COMPRESSION.GET_COMPRESSION_RATIO进行压缩率的测算:
SQL> declare 2 3 /* 4 COMP_NOCOMPRESS 5 COMP_FOR_OLTP 6 COMP_FOR_QUERY_HIGH 7 COMP_FOR_QUERY_LOW 8 COMP_FOR_ARCHIVE_HIGH 9 COMP_FOR_ARCHIVE_LOW 10 */ 11 12 lunar_scratchtbsname varchar2(32) := 'LUNAR'; 13 lunar_ownname varchar2(32) := 'LUNAR'; 14 lunar_tabname varchar2(32) := 'LUNARTEST'; 15 lunar_partname varchar2(32) := null; 16 lunar_comptype number(10,0) := dbms_compression.COMP_FOR_ARCHIVE_HIGH; 17 lunar_blkcnt_cmp pls_integer; 18 lunar_blkcnt_uncmp pls_integer; 19 lunar_row_cmp pls_integer; 20 lunar_row_uncmp pls_integer; 21 lunar_cmp_ratio number; 22 lunar_comptype_str varchar2(4000); 23 24 begin 25 26 DBMS_COMPRESSION.GET_COMPRESSION_RATIO ( 27 scratchtbsname => lunar_scratchtbsname, 28 ownname => lunar_ownname, 29 tabname => lunar_tabname, 30 partname => lunar_partname, 31 comptype => lunar_comptype, 32 blkcnt_cmp => lunar_blkcnt_cmp, 33 blkcnt_uncmp => lunar_blkcnt_uncmp, 34 row_cmp => lunar_row_cmp, 35 row_uncmp => lunar_row_uncmp, 36 cmp_ratio => lunar_cmp_ratio, 37 comptype_str => lunar_comptype_str 38 ); 39 40 dbms_output.put_line('Blocks compressed: ' || lunar_blkcnt_cmp); 41 dbms_output.put_line('Blocks uncompressed: ' || lunar_blkcnt_uncmp); 42 dbms_output.put_line('Rows per block compressed: ' || lunar_row_cmp); 43 dbms_output.put_line('Rows per block uncompressed: ' || lunar_row_uncmp); 44 dbms_output.put_line('Compression Ratio: ' || lunar_cmp_ratio); 45 dbms_output.put_line('Comment: ' || lunar_comptype_str); 46 47 end; 48 / select name,value/1024/1024 as mb from v$statname natural join v$mystat where name = 'cell physical IO interconnect bytes returned by smart scan'; select name,value/1024/1024 as mb from v$statname natural join v$mystat where name in ( 'physical read total bytes', 'cell physical IO interconnect bytes', 'cell physical IO interconnect bytes returned by smart scan' ); Compression Advisor self-check validation successful. select count(*) on both Uncompressed and EHCC Compressed format = 1000001 rows Blocks compressed: 31 Blocks uncompressed: 8994 Rows per block compressed: 32258 Rows per block uncompressed: 111 Compression Ratio: 290.1 Comment: "Compress For Archive High" PL/SQL procedure successfully completed. Elapsed: 00:00:40.02 SQL> SQL> 2 NAME MB ---------------------------------------------------------------- ---------- cell physical IO interconnect bytes returned by smart scan 0 Elapsed: 00:00:00.00 SQL> SQL> 2 3 4 5 6 7 NAME MB ---------------------------------------------------------------- ---------- physical read total bytes 947.539063 cell physical IO interconnect bytes 2842.55469 cell physical IO interconnect bytes returned by smart scan 0 Elapsed: 00:00:00.00 SQL>
上面的例子是Compress For Archive High,其他依此类推,测试用例参见:《Exadata上的HCC测试(EHCC)——1》
–Compress For Archive Low:
Compression Advisor self-check validation successful. select count(*) on both Uncompressed and EHCC Compressed format = 1000001 rows Blocks compressed: 41 Blocks uncompressed: 8994 Rows per block compressed: 24390 Rows per block uncompressed: 111 Compression Ratio: 219.3 Comment: "Compress For Archive Low"
–COMP_FOR_OLTP:
Table Compress Type: COMP_FOR_OLTP Blocks compressed: 1558 Blocks uncompressed: 2688 Rows per block compressed: 192 Rows per block uncompressed: 111 Compression Ratio: 1.7 Comment: "Compress For OLTP"
–Compress For Query High:
Compression Advisor self-check validation successful. select count(*) on both Uncompressed and EHCC Compressed format = 1000001 rows Blocks compressed: 41 Blocks uncompressed: 8994 Rows per block compressed: 24390 Rows per block uncompressed: 111 Compression Ratio: 219.3 Comment: "Compress For Query High"
–Compress For Query Low:
Compression Advisor self-check validation successful. select count(*) on both Uncompressed and EHCC Compressed format = 1000001 rows Blocks compressed: 1928 Blocks uncompressed: 8994 Rows per block compressed: 519 Rows per block uncompressed: 111 Compression Ratio: 4.6 Comment: "Compress For Query Low"
–COMP_NOCOMPRESS:
Table Compress Type: COMP_NOCOMPRESS Blocks compressed: 0 Blocks uncompressed: 0 Rows per block compressed: 0 Rows per block uncompressed: 0 Compression Ratio: 0 Comment:
LUNAR@mylove>set lines 155 LUNAR@mylove>compute sum of totalsize_megs on report LUNAR@mylove>break on report LUNAR@mylove>col owner for a10 LUNAR@mylove>col segment_name for a30 LUNAR@mylove>col segment_type for a10 LUNAR@mylove>col totalsize_megs for 999,999.9 LUNAR@mylove>col compression_ratio for 999.9 LUNAR@mylove>select owner, segment_name, segment_type type, 2 sum(bytes/1024/1024) as totalsize_megs, 3 &original_size/sum(bytes/1024/1024) as compression_ratio 4 from dba_segments 5 where owner='LUNAR' 6 and segment_name like 'LUNAR%' 7 and segment_type ='TABLE' 8 group by owner, segment_name, tablespace_name, segment_type 9 order by 5; Enter value for original_size: 1472 old 3: &original_size/sum(bytes/1024/1024) as compression_ratio new 3: 1472/sum(bytes/1024/1024) as compression_ratio OWNER SEGMENT_NAME TYPE TOTALSIZE_MEGS COMPRESSION_RATIO ---------- ------------------------------ ------------------ -------------- ----------------- LUNAR LUNARTEST TABLE 1,472.0 1.0 LUNAR LUNAR_COMP_OLTP TABLE 904.0 1.6 LUNAR LUNAR_COMP_BASIC TABLE 736.0 2.0 LUNAR LUNAR_COMP_QUERY_LOW TABLE 304.0 4.8 LUNAR LUNAR_COMP_QUERY_HIGH TABLE 8.0 184.0 LUNAR LUNAR_COMP_ARCHIVE_LOW TABLE 8.0 184.0 LUNAR LUNAR_COMP_ARCHIVE_HIGH TABLE 5.0 294.4 -------------- sum 3,437.0 7 rows selected. Elapsed: 00:00:00.08 LUNAR@mylove>