mysql 5.7 Transparent PageIO Compression
上接上篇。本篇作為補充:
原理
innodb的透明頁IO壓縮,利用punch hole和資料壓縮來實現。在記憶體中是一個正常的頁,只有在寫到磁碟時,才進行壓縮。呼叫函式os_file_io_complete進行punch hole操作,os_file_io_complete呼叫的是fallocate()作業系統函式,並且使用 FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE標籤,回收磁碟上頁的空閒block。具體方法是先將壓縮後的內容寫入到磁碟,此時磁碟上頁仍然是16K,寫完成後,呼叫fallocate函式回收磁碟頁中空閒的block,該block以系統block_size為單位。
優點
1、記憶體中方便管理,只有正常頁,不存在壓縮後的頁
2、更加簡單靈活的使用壓縮演算法
3、程式碼上可以針對各種型別的頁進行壓縮
缺點
引用淘寶資料庫核心月報中內容:
- 無法完美壓縮:例如9KB的資料可能需要12kb來儲存,取決於block size;
- 無法壓縮Buffer pool, 這是和傳統innodb壓縮相比,以前的壓縮方式可以在記憶體中只存放壓縮頁複製 (然而也有可能同時存在壓縮和解壓頁),因此使用者可能需要去購買iops更高的裝置,而oracle正好也賣這些….
- punch hole 可能產生的檔案碎片化,底層的檔案管理更加複雜;
- 對innodb檔案做punch hole可能帶來的後果是,使得每個檔案的page變成一個獨立的segment,檔案系統需要單獨的journal和metadata來管理。另外也有可能有效能問題:可能比non-sparse的寫操作昂貴五倍 (這依賴於具體的核心);
- 刪除一個擁有幾百萬個段管理物件的資料檔案帶來的開銷會非常昂貴。
mariadb
mysql的innodb中僅支援2種壓縮演算法,而mariadb的XTRADB中可支援zlib、lz4、lzo、lzma、bzip2、snappy等5種演算法。除了,zlib、lz4外,其他的需要下載程式碼進行編譯安裝。如何使用可參考
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31493717/viewspace-2148674/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL5.7 InnoDB Page CompressionMySql
- Oracle Transparent GateWay connect to MYSQL fix BUGOracleGatewayMySql
- 【MySQL】MySQL 5.7 初探MySql
- MySQL 5.7新特性MySql
- 使用Docker Mysql 5.7DockerMySql
- Docker 部署 MySQL 5.7DockerMySql
- MySQL 5.7 SYS SCHEMAMySql
- 【Mysql】mysql閃回flashback-5.7MySql
- Oracle Database Compression 1 - Basic CompressionOracleDatabase
- MySQL 5.7的角色功能MySql
- Install MySQL 5.7 in the DockerMySqlDocker
- MySQL 5.7 叢集搭建MySql
- Mysql 5.7 MHA 高可用MySql
- MySQL:5.6 升級 5.7MySql
- Docker 安裝 Mysql 5.7DockerMySql
- MySQL 5.7 InnoDB Tablespace EncryptionMySql
- MySQL5.7 多例項MySql
- mysql 5.7主主同步MySql
- MySQL 5.7 索引優化MySql索引優化
- mysql5.7MHA配置MySql
- [Mysql]Mysql5.7並行複製MySql並行
- [Mysql] 2.Mysql 5.7 Install (Windows)MySqlWindows
- 【Mysql】mysql5.7無損複製MySql
- Unused Block Compression和Null Block CompressionBloCNull
- mysql 5.7 虛擬列功能MySql
- MySQL 5.7並行複製MySql並行
- mysql 5.7半同步複製MySql
- MySQL 5.7:desc order by反向定位MySql
- MySQL5.7: sql script demoMySql
- CentOS 7 - 安裝MySQL 5.7CentOSMySql
- CentOS 7 安裝 MySQL 5.7CentOSMySql
- mysql5.7 安裝教程MySql
- MySQL 5.7配置SSL連線MySql
- 【MySQL】5.7新特性之一MySql
- 【MySQL】5.7新特性之二MySql
- 【MySQL】5.7新特性之三MySql
- 【MySQL】5.7新特性之四MySql
- 【MySQL】5.7新特性之五MySql