博客文章除注明转载外,均为原创。转载请注明出处。
1、介绍
MySQL 8.0实现了直方图的统计。数据字典表column_statistics储存了相关列值的直方图统计信息,提供列数据分布情况,以用于优化器构建查询执行计划。执行ANALYZE TABLE [table] 命令可以管理相关列的直方图,默认情况下这些信息会被复制到备库。
比如:
ANALYZE TABLE tbl_name UPDATE HISTOGRAM ON col_name [, col_name] WITH N BUCKETS;
ANALYZE TABLE tbl_name DROP HISTOGRAM ON col_name [, col_name];
INFORMATION_SCHEMA.COLUMN_STATISTICS具有以下特征:
该表包含除几何类型(空间数据)和之外的所有数据类型的列的统计信息,保存为JSON类型。
该表数据是持久化的,因此每次服务器启动时都不需要创建列统计信息。
服务器对表执行更新统计信息; 用户不能去更新信息
2、直方图信息
用户无法直接访问column_statistics表,因为它是数据字典的一部分。
通过数据字典表的视图INFORMATION_SCHEMA.COLUMN_STATISTICS可以查询直方图信息。
CREATE TABLE IF NOT EXISTS column_stats (
database_name VARCHAR(64) NOT NULL,
table_name VARCHAR(64) NOT NULL,
column_name VARCHAR(64) NOT NULL,
histogram JSON NOT NULL,
P