文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美國信紙) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


17.9.1.1 表格壓縮概述

由於處理器和快取記憶體的速度提升比磁碟儲存裝置更快,因此許多工作負載都是磁碟受限。資料壓縮可縮減資料庫大小、減少 I/O 並改善輸送量,但會稍微增加 CPU 使用率。對於讀取密集型的應用程式,以及具有足夠 RAM 來將常用資料保留在記憶體中的系統,壓縮特別有價值。

使用 ROW_FORMAT=COMPRESSED 建立的 InnoDB 表格可以在磁碟上使用比設定的 innodb_page_size 值更小的頁面大小。較小的頁面需要較少的 I/O 來從磁碟讀取和寫入,這對於 SSD 裝置特別有價值。

壓縮頁面大小是透過 CREATE TABLEALTER TABLE KEY_BLOCK_SIZE 參數指定。不同的頁面大小要求將表格放置在每個表格的表空間一般表空間中,而不是在系統表空間中,因為系統表空間無法儲存壓縮的表格。如需更多資訊,請參閱第 17.6.3.2 節「每個表格的表空間」第 17.6.3.3 節「一般表空間」

無論 KEY_BLOCK_SIZE 值為何,壓縮等級都相同。當您為 KEY_BLOCK_SIZE 指定較小的值時,您會獲得越來越小的頁面的 I/O 優勢。但是,如果您指定的值太小,則當資料值無法壓縮到足以在每個頁面中放入多列時,重新組織頁面會有額外的負荷。根據每個索引的索引鍵欄位的長度,表格的 KEY_BLOCK_SIZE 可以有多小的硬性限制。指定的值太小,則 CREATE TABLEALTER TABLE 陳述式將會失敗。

在緩衝池中,壓縮資料會保留在小型頁面中,頁面大小會根據 KEY_BLOCK_SIZE 值而定。為了擷取或更新欄位值,MySQL 還會在緩衝池中建立具有未壓縮資料的未壓縮頁面。在緩衝池中,對未壓縮頁面的任何更新也會重新寫回對等的壓縮頁面。您可能需要調整緩衝池的大小,以容納壓縮頁面和未壓縮頁面的額外資料,儘管在需要空間時,未壓縮頁面會從緩衝池中逐出,然後在下次存取時再次解壓縮。