联系: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>
											 
								
 
 
 
 
 
