日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

oracle表压缩比,oracle的compress 特性介绍

發布時間:2024/9/27 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 特性介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。