1、制作测试表

create table t1 as select * from FW_T_GTXLOG

insert into t1 select * from t1;

create table t2 compress as select * from t1

create table t3 as select * from t1

2、查看测试表数据量

select count(*) from t1;

select count(*) from t2;

select count(*) from t3;

3、查看测试表物理大小

SQL> select t.bytes/1024/1024/1024,t.blocks from dba_segments t where t.segment_name='T1';

T.BYTES/1024/1024/1024    BLOCKS

---------------------- ----------

16.8876953G   2213504

Elapsed: 00:00:00.14

SQL> select t.bytes/1024/1024/1024,t.blocks from dba_segments t where t.segment_name='T2';

T.BYTES/1024/1024/1024    BLOCKS

---------------------- ----------

13.0625G   1712128

Elapsed: 00:00:00.10

SQL> select t.bytes/1024/1024/1024,t.blocks from dba_segments t where t.segment_name='T3';

T.BYTES/1024/1024/1024    BLOCKS

---------------------- ----------

16.8359375G   2206720

Elapsed: 00:00:00.09

4、查看测试表索引大小

SQL> select t.bytes/1024/1024/1024,t.blocks*8192 from dba_segments t where t.segment_name='IND_GUID_1';

T.BYTES/1024/1024/1024 T.BLOCKS*8192

---------------------- -------------

3.125   3355443200

Elapsed: 00:00:00.10

SQL> select t.bytes/1024/1024/1024,t.blocks*8192 from dba_segments t where t.segment_name='IND_GUID_2';

T.BYTES/1024/1024/1024 T.BLOCKS*8192

---------------------- -------------

.5390625    578813952

Elapsed: 00:00:00.09

SQL> select t.bytes/1024/1024/1024,t.blocks*8192 from dba_segments t where t.segment_name='IND_GUID_3';

T.BYTES/1024/1024/1024 T.BLOCKS*8192

---------------------- -------------

.5390625    578813952

Elapsed: 00:00:00.10

5、查看测试表定义语句

-- Create table T1

create table T1

(

GUID NVARCHAR2(32) not null,

GTXID     NVARCHAR2(200),

STARTTIME NVARCHAR2(32),

SOURCETX  NUMBER(1),

STATUS    NUMBER(1),

ENDTIME   NVARCHAR2(32),

DOMAIN    NVARCHAR2(50)

)

tablespace EFMIS

pctfree 10

initrans 1

maxtrans 255

storage

(

initial 64

next 8

minextents 1

maxextents unlimited

);

-- Create/Recreate indexes

create index IND_GUID_1 on T1 (GUID)

tablespace EFMIS

pctfree 10

initrans 2

maxtrans 255

storage

(

initial 64K

next 1M

minextents 1

maxextents unlimited

);

-- Create table T2

create table T2

(

GUID NVARCHAR2(32) not null,

GTXID     NVARCHAR2(200),

STARTTIME NVARCHAR2(32),

SOURCETX  NUMBER(1),

STATUS    NUMBER(1),

ENDTIME   NVARCHAR2(32),

DOMAIN    NVARCHAR2(50)

)

tablespace EFMIS

pctfree 0

initrans 1

maxtrans 255

storage

(

initial 64

next 8

minextents 1

maxextents unlimited

)

compress;  -------------------------------------------------------------------------------

-- Create/Recreate indexes

create index IND_GUID_2 on T2 (GUID)

tablespace EFMIS

pctfree 10

initrans 2

maxtrans 255

storage

(

initial 64K

next 1M

minextents 1

maxextents unlimited

)

compress; ---------------------------------------------------

-- Create table T3

create table T3

(

GUID NVARCHAR2(32) not null,

GTXID     NVARCHAR2(200),

STARTTIME NVARCHAR2(32),

SOURCETX  NUMBER(1),

STATUS    NUMBER(1),

ENDTIME   NVARCHAR2(32),

DOMAIN    NVARCHAR2(50)

)

tablespace EFMIS

pctfree 10

initrans 1

maxtrans 255

storage

(

initial 64

next 8

minextents 1

maxextents unlimited

);

-- Create/Recreate indexes

create index IND_GUID_3 on T3 (GUID)

tablespace EFMIS

pctfree 10

initrans 2

maxtrans 255

storage

(

initial 64K

next 1M

minextents 1

maxextents unlimited

)

compress;    ---------------------------------------------------------------------

6、收集3张表统计信息

begin

dbms_stats.gather_table_stats(ownname          => 'FASP_62',

tabname          => 'T1',

estimate_percent => 30,

method_opt       => 'FOR ALL COLUMNS SIZE 10',

degree => 4,

cascade => TRUE);

END;

7、测试具体查询语句效率:table access full

SQL> select count(*) from t1;

COUNT(*)

----------

37458112

Elapsed: 00:00:31.22

SQL> select count(*) from t2;

COUNT(*)

----------

37458112

Elapsed: 00:00:08.66

SQL> select count(*) from t3;

COUNT(*)

----------

37458112

Elapsed: 00:00:08.25

8、测试具体查询语句效率:index fasp full scan

SQL> select count(guid) from t1 where guid like '%BA92A682D9%';

COUNT(GUID)

-----------

32

Elapsed: 00:00:34.52

SQL> select count(guid) from t2 where guid like '%BA92A682D9%';

COUNT(GUID)

-----------

32

Elapsed: 00:00:18.27

SQL> select count(guid) from t3 where guid like '%BA92A682D9%';

COUNT(GUID)

-----------

32

Elapsed: 00:00:20.27

结论:t2\t3表的索引为压缩索引,从以上执行结果可知,索引重复率情况下,compress压缩对于select而言,具有一定的效果,提高速度一半以上。

9、结论

1、非唯一性索引可以建立compress索引。

create index IND_GUID_3 on T3 (GUID) tablespace EFMIS  compress;

2、可以通过以下命令查看索引或者表占据的硬盘容量:

select t.bytes/1024/1024/1024,t.blocks*8192 from dba_segments t where t.segment_name='IND_GUID_3';

select t.bytes/1024/1024/1024,t.blocks*8192 from dba_segments t where t.segment_name='IND_GUID_1';

以上sql查询出的索引大小与为压缩的索引大小相差悬殊,择证明压缩后可以提高查询效率。

Oracle性能优化之表压缩及并行提高效率的测试的更多相关文章

  1. Oracle性能优化顺序表名称来选择最有效的学习笔记

    选择最有效的顺序表名(只有有效的基于规则的优化)  ORACLE分析器按照订单处理从右到左FROM在FROM子句中的表名,故FROM写在最后的表(基础表 driving table)将被最先处理. 在 ...

  2. oracle性能优化之表设计

    数据库优化的目标无非是避免磁盘I/O瓶颈.减少CPU利用率和减少资源竞争.为了便于读者阅读和理解,笔者参阅了Sybase.Informix和Oracle等大型数据库系统参考资料,基于多年的工程实践经验 ...

  3. oracle性能优化之awr分析

    oracle性能优化之awr分析 作者:bingjava 最近某证券公司系统在业务期间系统运行缓慢,初步排查怀疑是数据库存在性能问题,因此导出了oracle的awr报告进行分析,在此进行记录. 导致系 ...

  4. 【转载】我眼中的Oracle性能优化

    我眼中的Oracle性能优化 大家对于一个业务系统的运行关心有如下几个方面:功能性.稳定性.效率.安全性.而一个系统的性能有包含了网络性能.应用性能.中间件性能.数据库性能等等. 今天从数据库性能的角 ...

  5. SQL Server查询性能优化——堆表、碎片与索引(二)

    本文是对 SQL Server查询性能优化——堆表.碎片与索引(一)的一些总结.  第一:先对 SQL Server查询性能优化——堆表.碎片与索引(一)中的例一的SET STATISTICS IO之 ...

  6. 我眼中的 Oracle 性能优化

    恒生技术之眼 作者 林景忠 大家对于一个业务系统的运行关心有如下几个方面:功能性.稳定性.效率.安全性.而一个系统的性能有包含了网络性能.应用性能.中间件性能.数据库性能等等. 今天从数据库性能的角度 ...

  7. Oracle性能优化1-总体思路和误区

    最近在看梁敬彬老师关于Oracle性能优化的一些案例,在这里做一些简单的总结 1.COUNT(*)与COUNT(列)哪个更快 drop table t purge; create table t as ...

  8. 0709MySQL 数据库性能优化之表结构优化

    转自http://isky000.com/database/mysql-perfornamce-tuning-schema MySQL 数据库性能优化之缓存参数优化 MySQL数据库性能优化之硬件瓶颈 ...

  9. Oracle 性能优化的基本方法

    Oracle 性能优化的基本方法概述 1)设立合理的性能优化目标. 2)测量并记录当前性能. 3)确定当前Oracle性能瓶颈(Oracle等待什么.哪些SQL语句是该等待事件的成分). 4)把等待事 ...

随机推荐

  1. bowtie2-inspect 根据bowtie2的索引取得fasta 序列

    今天运行tophat2的时候看到下面这条记录: [2016-02-27 11:40:03] Checking for reference FASTA file Warning: Could not f ...

  2. 真想用c#开发个 wp五笔输入法。。。奈何网上资料太少,源码都是c++写的。求大神指点!!!

    真想用c#开发个 wp五笔输入法...奈何网上资料太少,源码都是c++写的.求大神指点!!!!

  3. .net FrameWork各个版本之间的发展[转]

    上个星期看到了.NET 4.0框架退休日期逐渐临近文章,发现自己一直在使用NET  FrameWork,身为一个NET程序员,里面大概的区别自己还是知道的,但是自己要说出个所以然来了,发现还是有点力不 ...

  4. rdesktop连接远程windows

    $ info rdesktop   //看一下帮助信息吧$rdesktop 192.168.1.1 //打开了一个8位色彩的,$rdesktop -a 16 192.168.1.1 //这个是16位色 ...

  5. 一篇文看懂Hadoop

    我们很荣幸能够见证Hadoop十年从无到有,再到称王.感动于技术的日新月异时,希望通过这篇内容深入解读Hadoop的昨天.今天和明天,憧憬下一个十年. 本文分为技术篇.产业篇.应用篇.展望篇四部分 技 ...

  6. VC++ 打开文件或文件夹对话框的实现方法

    实际工作开发中,由于各种应用,我们需要调用系统的打开文件对话框或者打开文件夹对话框,或两者兼有.特总结了常用的实现方法,仅供开发参考. 1. 打开文件对话框 常用的方法是使用系统的CFileDialo ...

  7. mysql中如何在创建数据库的时候指定数据库的字符集?

    需求描述: 在创建DB的时候指定字符集. 操作过程: 1.使用create database语句创建数据库 mysql> create database if not exists test03 ...

  8. APP的缓存文件放在哪里?

    只要是需要进行联网获取数据的APP,都会在本地产生缓存文件.那么,这些缓存文件到底放在什地方合适呢?系统有没有给我们提供建议的缓存位置呢?不同的缓存位置有什么不同呢? 考虑到卸载APP必须删除缓存 在 ...

  9. js获取一个字符串中指定字符第n次出现的位置

    function nthIndexOf(str,c,n){ var x=str.indexOf(c); for(var i=0;i<num;i++){ x=str.indexOf(c,x+1); ...

  10. 【java】将List中的实体按照某个字段进行分组的算法

    如何将List中存放的实体按照某个字段进行分组呢?来看看下面的例子,假如实体中有个字段叫批次号,我们将具有相同批次号的实体放在一起,那么怎么实现呢?看下面的代码: 可以定义个Map,Map的key用于 ...