MySQL 5.5的COMPRESSED INNODB表
從5.5開始,INNODB 引擎也可以像MYISAM引擎一樣來進行壓縮了。 當然壓縮後的表沒事你也別INSERT 或者 UPDATE了。 DELETE 就無所謂了,只是MARK下,完了再批量刪除。 這點和BRIGHTHOUSE 引擎倒是一致。
www.2cto.com
當然了, 並不是所有的表都適合壓縮,然後進行讀取。 應用場景,數據的分布,以及硬件的資源都制約了是否要進行壓縮。這個時候來說,最好的辦法就是進行壓力測試,看看是否適合你自己的業務。
下面呢,就是壓縮表對應的一些新的特性。
1. 壓縮表只針對單表空間有效,所以設置如下參數:
innodb_file_per_table
innodb_file_format = Barracuda
2. 建表OPTIONS。 www.2cto.com
ROW_DATEFORMAT = COMPRESSED
KEY_BLOCK_SIZE = (1,2,4,8,16.)
至於到底設置多少KEY_BLOCK_SIZE大小合適,取決於要進行壓縮的表數據分布。簡單來說,可以用同樣的數據,插入不同結構的表, 完了查看磁盤上表的大小就OK。
3. 還有一個要注意的。
設置了INNODB的壓縮表,那麼你的INNODB_BUFFER_POOL_SIZE 至少應該是以前的兩倍大小。 因為在緩沖池裡面要保留兩份SIZE不同但是數據一致的PAGE。這樣,增加了對內存的開銷。
作者 四爺