首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 壓縮表特性詳解:myisampack 創建、只讀優勢、列級壓縮算法與適用場景

     編輯:MySQL 資料庫相關知識

基本特性

  • 由 myisampack 工具創建,只讀格式。
  • 所有 MySQL 發布版默認包含 myisampack。
  • 可用 myisamchk 解壓縮恢復為普通 MyISAM 表。

核心優勢

  1. 極小磁盤佔用:最小化 I/O,適合只讀介質(CD-ROM、只讀分區、歸檔存儲)。
  2. 記錄級獨立壓縮:隨機訪問開銷極低,記錄頭 1-3 字節(視最大記錄長度)。
  3. 列級差異化壓縮:每列獨立 Huffman 樹,多種壓縮類型自動組合:
  • 後綴空間壓縮
  • 前綴空間壓縮
  • 零值位圖存儲(1 bit)
  • 整數列動態縮容(如 BIGINT 實際范圍在 -128~127 → 存為 TINYINT)
  • 低基數列自動轉 ENUM
  • 上述類型任意組合
  • 支持定長/動態長記錄:自適應行格式。
  • 創建與使用

    
    # 1. 停止寫入,備份原表
    # 2. 壓縮
    myisampack tbl_name.MYI
    # 3. 重建索引(必須)
    myisamchk -rq tbl_name.MYI
    # 4. 表現為只讀,INSERT/UPDATE/DELETE 將報錯
    

    適用場景

    • 數據倉庫歸檔分區(歷史日誌、報表快照)。
    • 只讀分發介質(安裝光盤、只讀掛載點)。
    • 嵌入式設備存儲受限環境。
    • 大量只讀查詢、極少寫入的查詢服務節點。

    限制與注意

    • 完全只讀:任何 DML 操作均失敗。
    • ALTER TABLE、DROP INDEX 等 DDL 亦不可用。
    • 壓縮後無法再次壓縮,需解壓後重新壓縮。
    • InnoDB 不支持壓縮表(InnoDB 有自帶頁壓縮 COMPRESSED 行格式)。
    • MySQL 8.0 仍支持但官方建議改用 InnoDB 透明頁壓縮或列存引擎。
    1. 上一篇文章:
    2. 下一篇文章:
    Copyright © 程式碼之家 All Rights Reserved