小解mysql中MyISAM表的PACK_KEYS壓縮索引

在MyISAM表,你也可以在創建表的時候通過指定PACK_KEYS=1來前綴壓縮數字。當數字被以高字節優先存儲之時,若你有許多具有同一前綴的整數鍵,上述方法是有幫助的。

在mysql的myisam引擎中,有一個是容易忽視的,叫壓縮索引PACK_KEYS ,

myISAM使用前綴壓縮來減小索引大小,默認情況下會壓縮字符串,也可以壓縮整數

可以使用create table時用PACK_KEYS控制索引壓縮的方式。

PACK_KEYS在MySQL手冊中如下描述:

如果您希望索引更小,則把此選項設置爲1。這樣做通常使更新速度變慢,同時閱讀速度加快。把選項設置爲0可以取消所有的關鍵字壓縮。把此選項設置爲DEFAULT時,存儲引擎只壓縮長的CHAR或VARCHAR列(僅限于MyISAM)。

如果您不使用PACK_KEYS,則默認操作是只壓縮字符串,但不壓縮數字。如果您使用PACK_KEYS=1,則對數字也進行壓縮。

在對二進制數字關鍵字進行壓縮時,MySQL采用前綴壓縮:

o 每個關鍵字需要一個額外的字節來指示前一個關鍵字中有多少字節與下一個關鍵字相同。

o 指向行的指針以高位字節優先的順序存儲在關鍵字的後面,用于改進壓縮效果。

這意味著,如果兩個連續行中有許多相同的關鍵字,則後續的“相同”的關鍵字通常只占用兩個字節(包括指向行的指針)。與此相比,常規情況下,後續的關鍵字占用storage_size_for_key + pointer_size(指針尺寸通常爲4)。但是,只有在許多數字相同的情況下,前綴壓縮才有好處。如果所有的關鍵字完全不同,並且關鍵字不能含有NULL值,則每個關鍵字要多使用一個字節。(在這種情況中,儲存壓縮後的關鍵字的長度的字節與用于標記關鍵字是否爲NULL的字節是同一字節。

比如有個字段保存 文件名,如"abc.pdf",其中pdf大家都是一樣的,因此可以

根據這個字段采用壓縮索引:

CREATE TABLE <TABLE_NAME> (
`id` INT NOT NULL ,
`name` VARCHAR(250) NULL ,
PRIMARY KEY (`id`) )
PACK_KEYS = 1;
ALTER TABLE table_name PACK_KEYS = 1;

更多相關文章
  • count()是用來統計數據表中所有記錄的一個函數了,但在此函數在innodb中效能不怎麽樣了,下面我們來看看mysql中innodb表中count()優化,希望例子對各位有幫助.起因:在innodb表上做count(*)統計實在是太慢了,因此想辦法看能不能再快點.現象:先來看幾個測試案例,如下一.
  • 在今天在一個mysql數據表中同時使用了多個timesatmp設置了默認值時發現提示了mysqltimestamp報錯#1293 - Incorrect table definition; there can be only one TIMESTAMP column with C 了,下面我就我解決
  • LINUX tar命令可對對gz bz2 tgz z等衆多壓縮文件的壓縮了,下面我整理了幾個常用的在linux中壓縮解壓的例子,有興趣的朋友可進入參考.tar格式: tar [選項] [文件目錄列表]功能: 對文件目錄進行打包備份選項:-c 建立新的歸檔文件-r 向歸檔文件末尾追加文件-x 從歸檔文 ...
  • 這裏要使用到強大的圖片處理工具:imagemagick,它可以對圖片進行格式轉換.大小壓縮.增加水印等操作,而不需要去寫第三方的程序,只需要寫簡單的SHELL腳本就可以完成圖片壓縮操作,我的操作環境是UBUNTU,在UBUNTU下面安裝這個軟件超級簡單 代碼如下 sudo apt-get insta ...
  • 今天對myiam數據表進行批量刪除後,發現空間沒有回收,查了資料後,發現要通過optimize table來回收空間今天對myiam數據表進行批量刪除後,發現空間沒有回收,查了資料後,發現要通過optimize table來回收空間測試如下,建立數據表: 代碼如下 CREATE TABLE `tte
  • TRUNCATE命令在mysql中清除表中所有記錄並且重置表的ID,下面我來介紹TRUNCATE的用法與實例.TRUNCATE TABLE刪除表中的所有行,而不記錄單個行刪除操作.語法 TRUNCATE TABLE
  • zip壓縮與unzip解壓是linux中一個常用的解壓縮命令了,我們可以利用它輕松的實現在linux系統中對文件進行壓縮與解壓操作了,下面一聚教程小編給各位整理一下.一般來說zip比較通用,不管在windows下還是在linux下,對zip都能夠輕松的實現壓縮與解壓.下面是比較常用的兩個個壓縮命令以 ...
  • 下面用php實現了一個對css進行壓縮和解壓縮的小程序,暫不適用于js的操作.通過這個案例可以學習php字符替換和正則替換的技術.將css代碼壓縮能夠減小文件的體積,從而減小了網路傳輸量和帶寬占用,減小了伺服器的處理的壓力源碼: 代碼如下 <!DOCTYPE html PUBLIC " ...
一周排行