`
woody_woodpecker
  • 浏览: 19103 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

compress table (转)

阅读更多
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
3.insert
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以获得最大的压缩比。
分享到:
评论

相关推荐

    Oracle 10gR2压缩(Compress)技术

    Oracle 10gR2 的压缩(Compress)技术是一种高效的数据存储策略,它能够显著减少数据库占用的物理存储空间,从而节省硬件成本并提高I/O性能。在Oracle数据库中,压缩可以应用于多个层次,包括表、表空间、物化视图、...

    compress/huf/rle等无损压缩算法代码包

    无损压缩算法是数据压缩领域的一种重要技术,它在压缩数据的同时能保证解压后的数据与原始数据完全一致。在给定的压缩包文件中,包含了一系列无损压缩算法的实现,如Huffman编码(Huf)、游程编码(RLE)、LZ77、LZW...

    ORACLE的数据段压缩技术.doc

    SQL> create table T1 (col number) compress; Table created. ``` 对于已经存在的非分区表,如果想将其压缩,可以使用 `ALTER TABLE` 语句,但请注意,这只会对表后续插入的数据生效,不会压缩原有的数据。要压缩...

    Oracle压缩表表空间

    SQL> alter table tmp_test compress; 取消表的压缩: SQL> alter table tmp_test nocompress; 确定一个表是否使用了压缩,可以查询 user_tables,compression 字段表明表是否被压缩: SQL> select table_name, ...

    ansys-mechanical-users-guidepdf_compress.pdf

    根据提供的文件信息,该文件名为《ansys-mechanical-users-guidepdf_compress.pdf》,显然是关于ANSYS Mechanical软件的用户指南。ANSYS Mechanical是ANSYS公司开发的一款有限元分析软件,广泛应用于工程仿真领域。...

    Compressing与Compacting区别

    值得注意的是,压缩后的Feature Class和Table不能编辑,也不能修改坐标系统信息、子类型、属性域、默认值、字段及其属性、表示法。唯一可更改的是Feature Class和Table的别名以及属性索引。在Feature Dataset中,...

    Oracle基本建表语句

    ALTER TABLE <table_name> ADD CONSTRAINT <constraint_name> FOREIGN KEY () REFERENCES <referenced_table>() ON DELETE CASCADE; ``` **示例:** ```sql ALTER TABLE stuinfo ADD CONSTRAINT stu_fk FOREIGN KEY ...

    oracle压缩.txt

    CREATE TABLE table_name (columns...) COMPRESS FOR OLTP; ``` - 或者先创建表再使用`ALTER TABLE`语句进行压缩设置: ```sql ALTER TABLE table_name COMPRESS FOR OLTP; ``` 2. **查看压缩状态** - 使用...

    dynamique-table-(1).zip_android

    标题 "dynamique-table-(1).zip_android" 暗示这是一个与Android应用程序相关的压缩文件,特别是关于图像处理。在Android开发中,图像处理是一项关键技能,它涉及到图像的加载、显示、编辑、滤镜应用等多种操作。让...

    sqoop配置.docx

    - 命令格式: `sqoop import --connect <jdbc_url> --username <username> --password <password> --table <table_name> --target-dir <hdfs_directory>` - 示例命令: `sqoop import --connect jdbc:mysql://...

    Oracle Advanced Compression Option (ACO) 白皮书

    addition to OLTP Table Compression, the Advanced Compression Option includes a comprehensive set of compression capabilities to help customers maximize resource utilization and reduce costs by ...

    5、ClickHouse查看数据库容量、表的指标、表分区、数据大小等

    (data_compressed_bytes / data_uncompressed_bytes) * 100 as compress_rate, -- 压缩率 max_date - min_date as days, -- 数据跨度天数 size / (max_date - min_date) as avgDaySize -- 平均每天数据量 from ...

    compress-bmp.rar_图形图象_C/C++_

    最后,将编码后的数据写入JPEG文件,按照JPEG的标准格式组织,包括SOI(Start of Image)、APPn(Application Marker)、SOFn(Start of Frame)、DQT(Quantization Table)、SOS(Start of Scan)等标记。...

    探讨Oracle表压缩技术及应用.pdf

    创建压缩表时,只需在`CREATE TABLE`语句中添加`COMPRESS`关键字。例如: ```sql CREATE TABLE sale.detail_record (columns...) COMPRESS; ``` 如果已经创建了表,可以通过`ALTER TABLE`语句改变表的压缩属性: ...

    3、通过datax同步oracle相关-oracle到hdfs

    "compress": "", "defaultFS": "", "fieldDelimiter": "", "fileName": "", "fileType": "", "path": "", "writeMode": "" } } } ], "setting": { "speed": { "channel": "" } } } } ``` 在这个...

    SQLMemTable for Delphi / C++ Builder

    SQLMemTable can compress data on the fly. The compression routines used in the SQLMemTable are much faster than most of popular archivers like PKZip, WinRar, Arj. High performance. - Fast search by B...

    oracle逻辑备份:关于expimp的操作与案例分析

    exp icdmain/icd rows=y indexes=n compress=n buffer=65536 feedback=100000 volsize=0 file=exp_icdmain_table_yyyymmdd.dmp log=exp_icdmain_table_yyyymmdd.log tables=icdmain.commoninformation,icdmain....

    android 图片在sqlite里的存取操作

    CREATE TABLE images_table ( id INTEGER PRIMARY KEY AUTOINCREMENT, image_data BLOB ); ``` 然后,将图片字节数组插入到表中: ```java SQLiteDatabase db = dbHelper.getWritableDatabase(); ...

    PDF2JSON是基于XPDF(3.02)的转换库,可用于将高性能PDF页面逐页转换为JSON和XML格式。 它还支持压缩数据以最小化大小。 PDF2JSON可用于Windows,OSX和Linux。 请访问https://flowpaper.com了解更多信息-C/C++开发

    PDF2JSON PDF2JSON是基于XPDF(3.02)的转换库,可用于将高性能PDF页面逐页转换为JSON和XML格式。 它还支持压缩数据以最小化大小。...:要转换的最后一页-compress:使用压缩模式-q:不要打印任何消息或错误

Global site tag (gtag.js) - Google Analytics