MySQL 8.3 Release Notes
示例 17.1 使用压缩信息模式表
以下是包含压缩表的数据库的示例输出(见第 17.9 节,“InnoDB 表和页面压缩”、INNODB_CMP
、INNODB_CMP_PER_INDEX
和 INNODB_CMPMEM
)。
以下表格显示了 INFORMATION_SCHEMA.INNODB_CMP
在轻负载下的内容。缓冲池中唯一的压缩页面大小是 8K。压缩或解压缩页面所花费的时间不到一秒,因为 COMPRESS_TIME
和 UNCOMPRESS_TIME
列为零。
page size | compress ops | compress ops ok | compress time | uncompress ops | uncompress time |
---|---|---|---|---|---|
1024 | 0 | 0 | 0 | 0 | 0 |
2048 | 0 | 0 | 0 | 0 | 0 |
4096 | 0 | 0 | 0 | 0 | 0 |
8192 | 1048 | 921 | 0 | 61 | 0 |
16384 | 0 | 0 | 0 | 0 | 0 |
根据 INNODB_CMPMEM
,缓冲池中有 6169 个压缩的 8KB 页。唯一其他分配的块大小是 64 字节。最小的 PAGE_SIZE
在 INNODB_CMPMEM
中用于块描述符的那些压缩页,其中没有未压缩页存在于缓冲池中。我们看到有 5910 个这样的页。间接地,我们看到 259 (6169-5910) 压缩页也存在于缓冲池中未压缩形式。
以下表格显示了 INFORMATION_SCHEMA.INNODB_CMPMEM
在轻负载下的内容。一些内存不可用是由于压缩页的内存分配器的碎片化:SUM(PAGE_SIZE*PAGES_FREE)=6784
。这是因为小的内存分配请求是通过拆分更大的块来满足的,开始从主缓冲池中分配 16K 块,使用 buddy 分配系统。碎片化如此之低是因为一些已分配的块已经被重新定位(复制)以形成更大的相邻免费块。这种复制 SUM(PAGE_SIZE*RELOCATION_OPS)
字节所花费的时间不到一秒 (SUM(RELOCATION_TIME)=0)
。