-
Notifications
You must be signed in to change notification settings - Fork 111
INNODB_CMP_PER_INDEX和INNODB_CMP_PER_INDEX_RESET
xiaoboluo768 edited this page Jun 7, 2020
·
2 revisions
- 这两个表中记录着InnoDB压缩表数据和索引相关的操作状态信息,对数据库、表、索引的每个组合使用不同的统计信息,以便为评估特定表的压缩性能和实用性提供参考数据
- 对于InnoDB压缩表,会对表中的数据和所有二级索引都进行压缩。此时表中的数据被视为另一个索引(包含所有数据列的聚集索引)
- 注意:由于为每个索引收集单独的度量值会导致性能大幅度降低,因此默认情况下不收集INNODB_CMP_PER_INDEX和INNODB_CMP_PER_INDEX_RESET表统计信息。如果确有需要,启用系统配置参数innodb_cmp_per_index_enabled即可(该配置参数为动态变量,默认为OFF)。
- 查询该表的账户需要有PROCESS权限,该表为Memory引擎临时表
- 表定义语句
CREATE TEMPORARY TABLE `INNODB_CMP_PER_INDEX` (
`database_name` varchar(192) NOT NULL DEFAULT '',
`table_name` varchar(192) NOT NULL DEFAULT '',
`index_name` varchar(192) NOT NULL DEFAULT '',
`compress_ops` int(11) NOT NULL DEFAULT '0',
`compress_ops_ok` int(11) NOT NULL DEFAULT '0',
`compress_time` int(11) NOT NULL DEFAULT '0',
`uncompress_ops` int(11) NOT NULL DEFAULT '0',
`uncompress_time` int(11) NOT NULL DEFAULT '0'
) ENGINE=MEMORY DEFAULT CHARSET=utf8
- 表字段含义
- DATABASE_NAME:包含压缩表的数据库名称
- TABLE_NAME:被监视压缩状态的表名称
- INDEX_NAME:被监视压缩状态的索引名称
- COMPRESS_OPS:尝试压缩操作的次数。当创建一个空白页或者非压缩页的修改日志的空间用完时,页都会被压缩
- COMPRESS_OPS_OK:成功压缩操作的次数
- COMPRESS_TIME:表示用于压缩INDEX_NAME列表示的索引中的数据时的CPU开销时间总量(以秒为单位)
- UNCOMPRESS_OPS:执行解压缩操作的次数。InnoDB页在压缩失败时,或者第一次访问的压缩页在缓冲池不存在时,则将进行解压缩操作
- UNCOMPRESS_TIME:表示用于解压缩INDEX_NAME列表示的索引中的数据时的CPU开销时间总量(以秒为单位)
- 表记录内容示例
# 需要先启用innodb_cmp_per_index_enabled系统参数为ON,然后在innodb表中使用建表选项key_block_size指定一个小于默认的page size的块大小时才会有数据
## INNODB_CMP_PER_INDEX表
root@localhost : test 12:38:08> select * from information_schema.INNODB_CMP_PER_INDEX;
+---------------+------------+------------+--------------+-----------------+---------------+----------------+-----------------+
| database_name | table_name | index_name | compress_ops | compress_ops_ok | compress_time | uncompress_ops | uncompress_time |
+---------------+------------+------------+--------------+-----------------+---------------+----------------+-----------------+
| test | test | i_id | 4 | 4 | 0 | 0 | 0 |
+---------------+------------+------------+--------------+-----------------+---------------+----------------+-----------------+
1 row in set (0.00 sec)
## INNODB_CMP_PER_INDEX_RESET表
root@localhost : test 12:38:11> select * from information_schema.INNODB_CMP_PER_INDEX_RESET;
+---------------+------------+------------+--------------+-----------------+---------------+----------------+-----------------+
| database_name | table_name | index_name | compress_ops | compress_ops_ok | compress_time | uncompress_ops | uncompress_time |
+---------------+------------+------------+--------------+-----------------+---------------+----------------+-----------------+
| test | test | i_id | 4 | 4 | 0 | 0 | 0 |
+---------------+------------+------------+--------------+-----------------+---------------+----------------+-----------------+
1 row in set (0.00 sec)
- 验证、测试、整理:罗小波
- QQ:309969177
- 提示:本系列文章的主体结构遵循Oracle MySQL 官方 5.7 手册中,关于information_schema、mysql schema、performance_schema、sys schema的章节结构体系,并额外添加了一些验证、测试数据。鉴于本人精力和能力有限,难免出现一些纰漏,欢迎大家踊跃指正!