使用压缩前,我们可以估算压缩能有多大效果。

11gr2我已经能够使用dbms_comp_advisor,具体代码见附件。只需要运行两个文件dbmscomp.sql和prvtcomp.plb。然后使用DBMS_COMP_ADVISOR.getratio存储过程就可以。不再具体描写叙述。

SQL> set serveroutput on
SQL> execdbms_comp_advisor.getratio('SH','SALES',10)
Sampling table: SH.SALES
Sampling percentage: 10%
Estimated compression ratio for the advancedcompression option is : 2.96

11gr2以后系统会自带一个dbms_compression的包,用来取代dbms_comp_advisor提供服务。

_sys@FAKE> desc dbms_compression
PROCEDURE GET_COMPRESSION_RATIO
ArgumentName Type In/Out Default?
----------------------------------------------------- ------ --------
SCRATCHTBSNAME VARCHAR2 IN
OWNNAME VARCHAR2 IN
TABNAME VARCHAR2 IN
PARTNAME VARCHAR2 IN
COMPTYPE NUMBER IN
BLKCNT_CMP BINARY_INTEGER OUT
BLKCNT_UNCMP BINARY_INTEGER OUT
ROW_CMP BINARY_INTEGER OUT
ROW_UNCMP BINARY_INTEGER OUT
CMP_RATIO NUMBER OUT
COMPTYPE_STR VARCHAR2 OUT
SUBSET_NUMROWS NUMBER IN DEFAULT
FUNCTION GET_COMPRESSION_TYPE RETURNS NUMBER
ArgumentName Type In/Out Default?
----------------------------------------------------- ------ --------
OWNNAME VARCHAR2 IN
TABNAME VARCHAR2 IN
ROW_ID ROWID IN
PROCEDURE INCREMENTAL_COMPRESS
ArgumentName Type In/Out Default?
----------------------------------------------------- ------ --------
OWNNAME VARCHAR2(30) IN
TABNAME VARCHAR2(128) IN
PARTNAME VARCHAR2(30) IN
COLNAME VARCHAR2 IN
DUMP_ON NUMBER IN DEFAULT
AUTOCOMPRESS_ON NUMBER IN DEFAULT
WHERE_CLAUSE VARCHAR2 IN DEFAULT

重点看GET_COMPRESSION_RATIO这个存储过程。它能够预估表的压缩比例。

能够使用下面的匿名块运行。

DECLARE
blkcnt_comp PLS_INTEGER;
blkcnt_uncm PLS_INTEGER;
row_comp PLS_INTEGER;
row_uncm PLS_INTEGER;
comp_ratio number;
comp_type VARCHAR2(30);
username varchar2(30) := '&USER';
tablename varchar2(30) := '&TB' ;
BEGIN
dbms_compression.get_compression_ratio('&Usedtbs',
username,
tablename,
NULL,
dbms_compression.COMP_FOR_OLTP,
blkcnt_comp,
blkcnt_uncm,
row_comp,
row_uncm,
comp_ratio,
comp_type);
dbms_output.put_line('Sampling table: '||username||'.'||tablename);
dbms_output.put_line('Estimated compression ratio: ' ||TO_CHAR(comp_ratio));
dbms_output.put_line('Compression Type: ' || comp_type);
END;
/

运行效果:

 /
Enter value for user: DEXTER
old 8: username varchar2(30) :='&USER';
new 8: username varchar2(30) :='DEXTER';
Enter value for tb: ACCOUNT
old 9: tablename varchar2(30) :='&TB' ;
new 9: tablename varchar2(30) :='ACCOUNT' ;
Enter value for usedtbs: USERS
old 11: dbms_compression.get_compression_ratio('&Usedtbs',
new 11: dbms_compression.get_compression_ratio('USERS',
Sampling table: DEXTER.ACCOUNT
Estimated compression ratio: 1
Compression Type: "Compress For OLTP" PL/SQL procedure successfully completed.

由于表中的反复值很少,上文中Estimated compression ratio: 1,表示没有不论什么压缩效果。

高级压缩,基于块内的压缩。所以就算有反复值。可是没有在一个块中,那么高级压缩还是无法起作用。

这里重点介绍一个參数 COMPTYPE,它一共同拥有6个选项。各自是

COMP_NOCOMPRESS               CONSTANT NUMBER := 1;
COMP_FOR_OLTP CONSTANT NUMBER := 2;
COMP_FOR_QUERY_HIGH CONSTANT NUMBER := 4;
COMP_FOR_QUERY_LOW CONSTANT NUMBER := 8;
COMP_FOR_ARCHIVE_HIGH CONSTANT NUMBER := 16;
COMP_FOR_ARCHIVE_LOW CONSTANT NUMBER := 32;

Query high 下面都是HCC(HybridColumnar Compression)的内容。由于与Exadata的存储节点相关。所以在非Exadata一体机环境无法使用。只是有意思的是,你能够在普通环境下使用get_compression_ratio来预估压缩的比例。

11gr2曾经compression-advisor存储过程下载地址:

http://download.csdn.net/detail/renfengjun/7514723

版权声明:本文博主原创文章,博客,未经同意不得转载。

Oracle压缩总结2— 估计表压缩效应的更多相关文章

  1. oracle 表压缩技术

    压缩表是我们维护管理中常常会用到的.以下我们看都oracle给我们提供了哪些压缩方式. 文章摘自"Oracle® Database Administrator's Guide11g Rele ...

  2. [Oracle] - 查看数据库中每个表占用空间大小,及进行表压缩

    查询用户创建的表 select * from user_tab_comments; -- 查询本用户的表,视图等. select * from user_col_comments; -- 查询本用户的 ...

  3. 7、SQL Server索引、表压缩

    索引 什么是索引? 索引是一种磁盘上的数据结构,建立在表或视图的基础上.使用索引可以使数据的获取更快更高校,也会影响其他的一些性能,如插入或更新等. 索引主要分为两种类型:聚集索引和非聚集索引. 字典 ...

  4. 三元组表压缩存储稀疏矩阵实现稀疏矩阵的快速转置(Java语言描述)

    三元组表压缩存储稀疏矩阵实现稀疏矩阵的快速转置(Java语言描述) 用经典矩阵转置算法和普通的三元组矩阵转置在时间复杂度上都是不乐观的.快速转置算法在增加适当存储空间后实现快速转置具体原理见代码注释部 ...

  5. SQL Server 表压缩

    表压缩有三个选项 1.page 2.row 3.none ----------------------------------------------------------------------- ...

  6. 【SQL Server性能优化】SQL Server 2008该表压缩

    当数据库是比较大的,而当你想备份,我们可以启动数据库备份压缩.这项由于备份文件比较小的压缩,所以整个备份的更快的速度,同时还低了磁盘空间的消耗. 当然还有一方面.肯定会添加cpu的消耗.只是一般的se ...

  7. MySQL InnoDB表压缩

    MySQL InnoDB表压缩 文件大小减小(可达50%以上) ==> 查询速度变快(count * 约减少20%以上时间) 如何设置mysql innodb 表的压缩: 第一,mysql的版本 ...

  8. hive 压缩全解读(hive表存储格式以及外部表直接加载压缩格式数据);HADOOP存储数据压缩方案对比(LZO,gz,ORC)

    数据做压缩和解压缩会增加CPU的开销,但可以最大程度的减少文件所需的磁盘空间和网络I/O的开销,所以最好对那些I/O密集型的作业使用数据压缩,cpu密集型,使用压缩反而会降低性能. 而hive中间结果 ...

  9. mysql 表压缩

    mysql中经常出现历史表,这些表不会进行修改数据的操作,只有读操作.那么我们可以对其进行压缩处理,缩减磁盘空间.Innodb表和MyISAM表的压缩指令不一样.下面分别来讨论: 一.InnoDB表 ...

随机推荐

  1. WPF用SkewTransform画3D柱状图

    WPF用SkewTransform画3D柱状图 SkewTransform主要是对控件实现一种2-D扭曲,具体内容可以查看以下链接: http://msdn.microsoft.com/zh-cn/l ...

  2. IAR FOR ARM 各版本号,须要的大家能够收藏了

    首先感谢大家的支持与关注,如今应该又一次编辑这篇文章了,这篇文章是非常久曾经不知在什么地方Copy过来的, 非常多问题不知怎么解决,如今我用的是KEIL for arm. 用过Keil和IAR,个人感 ...

  3. 王立平--Unity综上所述控制

    GUILayout   Label 创建一个自己主动布局的标签. Box 创建一个自己主动布局的box. Button 创建一个单次button.当用户点击button会马上发生一些事件. Repea ...

  4. POJ 2738 Two Ends(记忆化)

    Description In the two-player game "Two Ends", an even number of cards is laid out in a ro ...

  5. 【原创】leetCodeOj --- Interleaving String 解题报告

    题目地址: https://oj.leetcode.com/problems/interleaving-string/ 题目内容: Given s1, s2, s3, find whether s3  ...

  6. 传智播客成都校园php纪律指控

    继传智播客成都校区php第一期班圆满开班,说明php的火爆一点儿也不亚于java! 经传智播客商讨决定,传智播客成都校区php学科收费标准例如以下: 採用下面不论什么一种方式都能够享受优惠价: 一.自 ...

  7. MyReport报表引擎2.1.0.0新功能

    支持简单的四则运算样例1:算总分,简单连加 样例2:算平均分.除非和加法混合(可以识别先乘除后加减,不支持小括号优先运算) 新增行号函数 直接生成行号 新增多种格式化设置修复数个已发现的Bug.优化代 ...

  8. Android-管理Activity生命周期 -停止和重启Activity

    停止和重启activity在activity的生命周期中很重要,它能让用户感觉你的app总是激活的而且不会丢失他们的进度.activity在下面的这些情况会停止和重启: 用户打开常用app窗口然后从你 ...

  9. php+sqlite 最佳web服务器

    1 wampserver   支持mysql.每次都启动mysql,可以手动停止.但是运行时有时会很慢. 放弃 2 APS绿色版(Apache+PHP+SQLite)  组件环境:Apache2.2. ...

  10. java显示本地磁盘所有盘符,显示桌面路径

    import java.io.File; import javax.swing.filechooser.FileSystemView; /** 显示本地磁盘根盘符,显示桌面路径 */ public c ...