DB2 V9表壓縮(四)
除了資料行壓縮以外,以前的空值壓縮在DB2 V9中繼續可以使用。建立表時,可使用可選 VALUE COMRESSION 子句來指定表在使用表級別也可能是列級別的節省空間的行格式。使用 VALUE COMRESSION 時,不會將已指定給已定義的變長資料型別(VARCHAR、VARGRAPHICS、LONG VARCHAR、LONG VARGRAPHIC、BLOB、CLOB 和 DBCLOB)的 NULL 和零長度資料儲存在磁碟上。只有與這些資料型別相關聯的開銷值才會佔用磁碟空間。如果使用了VALUE COMRESSION,那麼還可以使用可選 COMPRSS SYSTEM DEFAULT 選項來進一步減少磁碟空間的使用量。如果插入的或更新的值等於列的資料型別的系統預設值,那麼使用的磁碟空間最少。預設值將不會儲存在磁碟上。支援COMPRSS SYSTEM DEFAULT的資料型別包括所有數字型別列、定長字元和定長圖形字串資料型別。這表示零和空格可以壓縮。要確定是否應考慮對錶進行空間壓縮,應瞭解大多數值等於系統預設值或 NULL 值的表將受益於新的行格式。例如,假設有一個 INTEGER 列且列的 90% 的列值為 0 (INTEGER資料型別的預設值)或 NULL,壓縮此表和此列將受益於新的行格式並節省大量的磁碟空間。
下面我們建立示例表TEST3,其使用VALUE COMRESSION對整個表的空值進行壓縮,對每個列使用COMPRESS SYSTEM DEFAULT選項對資料型別預設的系統預設值進行壓縮。
在DB2CLP視窗連上示例資料庫,發出CREATE TABLE命令建立示例表TEST3,並插入部分資料,具體如清單22所示:
- -清單22 .建立示例表TEST3
C:\> db2 connect to db2test1
資料庫連線資訊
資料庫伺服器 = DB2 / NT 9.1.0
SQL 授權標識 = RHETTE
本地資料庫別名 = DB2TEST1
C:\> DB2 CREATE TABLE TEST3 ( ID INTEGER COMPRESS SYSTEM DEFAULT , NAME VARCHAR ( 10 ) COMPRESS SYSTEM DEFAULT , NOTE VARCHAR ( 100 ) COMPRESS SYSTEM DEFAULT ) IN TABLESPACE1 VALUE COMPRESSION
DB20000I SQL命令成功完成。
C:\> db2 insert into test3 ( id , name ) values ( 0 , ' aa ')
DB20000I SQL命令成功完成。
C:\> db2 insert into test3 ( id , name ) values ( 1 , ' bb ')
DB20000I SQL命令成功完成。
命令成功完成,這樣我們就建立了示例表TEST3,其使用空值和預設值壓縮。
COMPRESS SYSTEM DEFAULT指定對系統預設值儲存時使用最小空間,如果VALUE COMRESSION子句沒有被指定,將返回一個警告SQLSTATE01648,並且系統預設值也不會在壓縮儲存。允許系統預設值壓縮將對INSERT和UPDATE操作額外增加一些效能開支,因為需要額外檢查是否需要預設值壓縮。COMPRESS SYSTEM DEFAULT子句不支援DATE,TIME,TIMESTAMP,XML或者結構化資料型別,否則會報SQLSTATE 42842錯誤。如果基本資料型別是變長字串,則本語句將自動忽略。
可以使用 DEACTIVATE VALUE COMPRESSION 來指定表將不再對錶中資料使用節省空間技術。如果使用DEACTIVATE VALUE COMPRESSION,這將顯式禁用與該表中的列相關聯的所有 COMPRESS SYSTEM DEFAULT 選項。
下面我們對示例表TEST3的ID列禁用系統預設值壓縮,在DB2CLP視窗中,發出帶COMPRESS OFF選項的ALTER TABLE命令,具體如清單23所示:
- -清單23 .對示例表TEST3一個列禁用系統預設值壓縮
C:\> DB2 ALTER TABLE TEST3 ALTER COLUMN ID COMPRESS OFF
DB20000I SQL命令成功完成。
下面我們對示例表TEST3使用 DEACTIVATE VALUE COMPRESSION 來指定表將不再對錶中資料使用節省空間技術,其各個列上的COMPRESS SYSTEM DEFAULT也將同時禁用。
在DB2CLP視窗中發出DEACTIVATE VALUE COMPRESSION命令,具體如清單24所示:
- -清單24 .對示例表TEST3禁用空間節省技術
C:\> DB2 ALTER TABLE TEST3 DEACTIVATE VALUE COMPRESSION
DB20000I SQL命令成功完成。
如果想對沒有啟用空值壓縮的舊錶啟用空值壓縮,可以是帶ACTIVATE VALUE COMPRESSION選項的ALTER TABLE命令顯式地啟用空值壓縮,比如我們對示例表TEST3還想啟用空值壓縮,可以在DB2CLP視窗中發出ALTER TABLE命令,具體如清單25所示:
- - 清單25 .對示例表TEST3啟用空值壓縮
C:\> DB2 ALTER TABLE test3 ACTIVATE VALUE COMPRESSION
DB20000I SQL命令成功完成。
如果對某個列想啟用系統預設值壓縮,可以在DB2CLP視窗中發出ALTER TABLE命令,具體如清單26所示:
- - 清單26 .對示例表TEST3啟用系統預設值壓縮
C:\> DB2 ALTER TABLE test3 ALTER id COMPRESS SYSTEM DEFAULT
DB20000I SQL命令成功完成。
參考資料
學習
獲得產品和技術
- 下載 DB2 V9 測試版,試用本文中描述的特性。
- 使用可直接從 developerWorks 下載的 IBM 試用軟體 構建您的下一個開發專案。
討論
- 參與ITPUB論壇討論。
- 參與 developerWorks blog 並加入 developerWorks 社群。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9524210/viewspace-496184/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 的表壓縮Oracle
- oracle壓縮表(二)Oracle
- oracle壓縮表(一)Oracle
- Sqlserver表和索引壓縮SQLServer索引
- MySQL 5.6的表壓縮MySql
- MYSQL壓縮表測試MySql
- 壓縮錶轉非壓縮表(線上重定義)
- Nginx網路壓縮 CSS壓縮 圖片壓縮 JSON壓縮NginxCSSJSON
- 檔案壓縮和解壓縮
- PE檔案格式詳細解析(四)-- 執行時壓縮及UPX壓縮除錯除錯
- Linux(四):Linux的打包和壓縮詳解Linux
- Python實現壓縮和解壓縮Python
- JS壓縮方法及批量壓縮JS
- linux下壓縮解壓縮命令Linux
- linux壓縮和解壓縮命令整理Linux
- Linux tar分卷壓縮與解壓縮Linux
- MySQL實現MYISAM表批次壓縮的方法MySql
- 簡單瞭解一下壓縮表
- CentOS 壓縮解壓CentOS
- Linux壓縮解壓Linux
- Golang 學習筆記(四)- archive/tar 實現打包壓縮及解壓Golang筆記Hive
- linux 高效壓縮工具之xz的壓縮解壓使用Linux
- Linux中檔案的壓縮和解壓縮Linux
- Gzipped 壓縮
- 打包/壓縮
- 當mysql表從壓縮表變成普通表會發生什麼MySql
- linux分卷壓縮解壓Linux
- linuxtar解壓和壓縮Linux
- 壓縮包格式有哪些?壓縮包格式大全
- ppt怎麼壓縮,ppt壓縮的技巧分享
- 壓縮Word,一鍵實現Word文件壓縮
- 分卷壓縮怎麼解壓 快速解壓電腦分卷壓縮檔案方法
- Linux 常用的壓縮與解壓縮命令詳解Linux
- Linux下的tar壓縮解壓縮命令詳解Linux
- .NET 壓縮/解壓檔案
- Keka for Mac壓縮解壓工具Mac
- Keka for Mac(壓縮解壓工具)Mac
- Linux打包壓縮解壓工具Linux
- MyZip for mac解壓壓縮工具Mac