oracle表压缩比,oracle的compress 特性介绍
oracle从9i r2开始推出了compress table的功能,compress table能提供良好的压缩性能,十分适用于存储历史数据。的打算
compress table需要通过创建table时指定compress子句
SQL 9I>create table testcom3(a number) compress;
Table created.
需要通过批量导入数据才能实现compress
1.alter table move
2.create table as select --compress是可以的,从compressed表是无法ctas为nocompress
3.insert /*+ APPEND */
4.direct path sqlldr
下面来看一些例子
SQL 9I>create table test(a varchar2(10),b number);
Table created.
begin
for i in 1..1000 loop
insert into test values(to_char(mod(i,9)),i);
commit;
end loop;
end;
/
PL/SQL procedure successfully completed.
SQL 9I>create table testcom1 compress as select * from test order by a;
Table created.
SQL 9I>set serveroutput on
SQL 9I>exec show_space('TEST');
Unformatted Blocks ..................... 32
FS1 Blocks (0-25) ..................... 0
FS2 Blocks (25-50) ..................... 0
FS3 Blocks (50-75) ..................... 1
FS4 Blocks (75-100)..................... 26
Full Blocks ..................... 1
Total Blocks............................ 128
Total Bytes............................. 1,048,576
Total MBytes............................ 1
Unused Blocks........................... 64
Unused Bytes............................ 524,288
Last Used Ext FileId.................... 11
Last Used Ext BlockId................... 904
Last Used Block......................... 64
PL/SQL procedure successfully completed.
SQL 9I>exec show_space('TESTCOM1');
Unformatted Blocks ..................... 0
FS1 Blocks (0-25) ..................... 0
FS2 Blocks (25-50) ..................... 0
FS3 Blocks (50-75) ..................... 0
FS4 Blocks (75-100)..................... 0
Full Blocks ..................... 2
Total Blocks............................ 128
Total Bytes............................. 1,048,576
Total MBytes............................ 1
Unused Blocks........................... 122
Unused Bytes............................ 999,424
Last Used Ext FileId.................... 11
Last Used Ext BlockId................... 1,032
Last Used Block......................... 6
PL/SQL procedure successfully completed.
可以看到compress table提供了良好的压缩比
另外创建compress table的时候还需要注意的是order by子句的功能
create table test2(a varchar2(10),b varchar2(10),c varchar2(10));
begin
for i in 1000000000..1000100000 loop
insert into test2 values(i,'1',to_char(mod(i,100)));
commit;
end loop;
end;
/
create table testcom4 compress as select * from test2 order by c;
create table testcom5 compress as select * from test2;
SQL 9I>exec show_space('TEST2');
Unformatted Blocks ..................... 0
FS1 Blocks (0-25) ..................... 0
FS2 Blocks (25-50) ..................... 0
FS3 Blocks (50-75) ..................... 0
FS4 Blocks (75-100)..................... 24
Full Blocks ..................... 288
Total Blocks............................ 384
Total Bytes............................. 3,145,728
Total MBytes............................ 3
Unused Blocks........................... 64
Unused Bytes............................ 524,288
Last Used Ext FileId.................... 13
Last Used Ext BlockId................... 1,032
Last Used Block......................... 64
PL/SQL procedure successfully completed.
SQL 9I>exec show_space('TESTCOM4');
Unformatted Blocks ..................... 0
FS1 Blocks (0-25) ..................... 0
FS2 Blocks (25-50) ..................... 0
FS3 Blocks (50-75) ..................... 0
FS4 Blocks (75-100)..................... 0
Full Blocks ..................... 226
Total Blocks............................ 256
Total Bytes............................. 2,097,152
Total MBytes............................ 2
Unused Blocks........................... 24
Unused Bytes............................ 196,608
Last Used Ext FileId.................... 12
Last Used Ext BlockId................... 1,160
Last Used Block......................... 104
PL/SQL procedure successfully completed.
SQL 9I>exec show_space('TESTCOM5');
Unformatted Blocks ..................... 0
FS1 Blocks (0-25) ..................... 0
FS2 Blocks (25-50) ..................... 0
FS3 Blocks (50-75) ..................... 0
FS4 Blocks (75-100)..................... 0
Full Blocks ..................... 259
Total Blocks............................ 384
Total Bytes............................. 3,145,728
Total MBytes............................ 3
Unused Blocks........................... 117
Unused Bytes............................ 958,464
Last Used Ext FileId.................... 13
Last Used Ext BlockId................... 1,160
Last Used Block......................... 11
PL/SQL procedure successfully completed.
可见order by子句对compress影响也是比较大,我们应该指定重复值多并且长度大的列做order by以获得最大的压缩比。
有人会对compress的读写性能表示担忧,但是实际上无论是全表扫描还是通过索引回表扫描压缩表的性能都不会比非压缩表差。至于dml,压缩表应该是不推荐进行dml的,但是当你通过非bulk操作inert 数据时那么这些数据将会不会进行压缩存储,也就是按照普通格式操作,所以效率并不会低,但是还是要避免对压缩表进行dml操作,尤其是update,update将会导致行迁移,从而使压缩表的容量比非压缩表还要大。
oracle表压缩比,oracle的compress 特性介绍相关推荐
- 开工大吉:Oracle 18c已经发布及新特性介绍
在2018的新年(据2月16日文章),Oracle宣布Database 18c已经发布,但是仍然是首先在Oracle Cloud上一体机环境发布出来.所以要等到常规版本的公开提供,还有一段时间要等. ...
- oracle表 游标,Oracle游标表达式和表函数
Oracle游标表达式是Oracle数据库中的重要概念,下面就为您详细介绍Oracle游标表达式和表函数方面的知识,供您参考学习之用. Oracle游标表达式(有时称为游标子队列)是 SQL 语言的一 ...
- oracle 表跟踪,Oracle表变化趋势追踪记录
#DBA_HIST_SEG_STAT可以看出对象的使用趋势,构造如下SQL查询出每个时间段内数据库对象的增长量,其中DB_BLOCK_CHANGES_DELTA为块个数 select c.SNAP_I ...
- 如何手动修改oracle表空间,ORACLE数据库创建和修改表空间
-建立表空间(oracle中的tablespace(表空间)) CREATE TABLESPACE data01 DATAFILE 'D:\oracle\ora92\oradata\db\DATA01 ...
- oracle 表 上限,Oracle分区表(Partition Table)的数量限制
Oracle分区表(Partition Table)的数量限制 有朋友在我的留言板上问到这样一个问题: oracle分区表是不是有最大分区个数限制,我有一张大约20G的表,有好多分区(按时间),结果根 ...
- rac建oracle表空间,Oracle Rac创建表空间及用户
1. 创建表空间: BEGIN DECLARE cnt integer := 0; BEGIN SELECT 1 INTO cnt FROM dual WHERE exists(SELECT * FR ...
- exp oracle 表空间,oracle之EXP导出表空间错误解决
导出表空间 第一 以DBA的权限登录 第二 检查表空间是否自我包容,检查结果将被放到视图transport_set_violations SQL> execute dbms_tts.transp ...
- 删除数据清理oracle表空间,oracle数据库删除无用表空间及数据文件过程
应用场景:html 数据库服务器A下的一张数据库表重建过,而且数据已经迁移到新表空间下,现遗留了一些原有的表空间数据文件在服务器上,耗费资源,如图所示: linux 原数据库表对应的数据文件:sql ...
- oracle表参数,Oracle 表的创建 及相关参数
1.创建表完整语法 CREATE TABLE [schema.]table (column datatype [, column datatype] - ) [TABLESPACE tablespac ...
最新文章
- 安装android studio出现choose an account with administrator
- 计算机网络OSI架构详细图
- CSS中颜色代码和单位
- Flutter之Container
- 均分纸牌(经典贪心)
- Adobe illustrator 批量变换同时选中的单个对象 - 连载 12
- 猿创征文|[CM311-1A Armbian]-烧录制作 Armbian 系统盘以及写入 CM311-1A 机顶盒的 EMMC 刷成服务器
- perl脚本GET系统命令执行
- 从JavaEye社区被迫改名说起(转载他人博客)
- 进销存excel_Excel教程:教大家做简单的进销存
- 判断四张扑克牌能否凑成24点游戏算法
- java 有多少种锁_java有哪些锁?java锁种类盘点
- 走向全民开发,低代码重塑企业数字化生产力 | 爱分析报告
- SpringCloud这35问,弄懂了面试官都不得不夸你一句
- 解决Word导出PDF显示有批注的问题
- 浅谈中国院落文化,打造中式家居风尚!
- 判断两个区间有无交集
- TopCoder SRM 558 Div 1 - Problem 1000 SurroundingGame
- 登陆注册-带图片的验证码
- matlab diary on,matlab-dlmwrite跟diary输出数据