MySql里边和查询成本计算相关的表及系统变量

整理自掘金小册《MySQL是怎样运行的:从根儿上理解MySQL》第13章、14章,方便自己查找,做下记录。

#查询表的统计数据
SHOW TABLE STATUS like 'table_name';

#查看表的索引统计数据
SHOW INDEX FROM table_name;

#系统变量:eq_range_index_dive_limit
#当IN里边的值的数量大于这个值的时候,将不再使用index_dive,而使用索引统计数据计算IN里边各个单点区间的记录条数
SHOW VARIABLES LIKE 'eq_range_index_dive_limit';

#系统变量:optimizer_search_depth
#如果连接表的个数小于该值,那么就继续穷举分析每一种连接顺序的成本,否则只对与optimizer_search_depth值相同数量的表进行穷举分析
SHOW VARIABLES LIKE 'optimizer_search_depth';

#系统表:mysql.server_cost、mysql.engine_cost
#存储MySql服务器层面、存储引擎层面各个操作的成本常数,用于查询优化器对成本的计算;
#可以根据需要设置里边的值,然后使用FLUSH OPTIMIZER_COSTS;语句以使得MySql开始应用这些成本常数。
SELECT * FROM mysql.server_cost;
SELECT * FROM mysql.engine_cost;

#系统变量:innodb_stats_persistent
#决定innodb的统计信息是存储在内存中还是磁盘上,当变量值为ON,代表存在磁盘上。
SHOW VARIABLES LIKE 'innodb_stats_persistent';

#查看所有表的统计信息
#MySql持久化存储了的各个表的统计信息实际上是存储在这张内部表里边的,SHOW TABLE STATUS命令实际查询这个表的部分数据
SELECT * FROM mysql.innodb_table_stats;

#查看所有索引的统计信息
#MySql持久化存储了的各个表的统计信息实际上是存储在这张内部表里边的,SHOW INDEX FROM命令实际查询这个表部分数据
SELECT * FROM mysql.innodb_index_stats;

#系统变量:innodb_stats_auto_recalc
#设置MySql是否自动更新统计信息,当变量值为ON的时候,表记录数的变动大于表大小的10%,会异步刷新统计信息
SHOW VARIABLES LIKE '系统变量:innodb_stats_auto_recalc';

#同步刷新表的统计信息
ANALYZE TABLE table_name;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值