TDSQL for MySQL修改统计信息参数

​

在日常运维及性能分析中,我详细很多朋友都遇到过执行计划选错索引,统计信息更新不及时,优化器判断错误等场景。

在 MySQL 架构中,InnoDB 管理数据并维护统计信息,Server 层优化器则基于这些统计信息生成执行计划。当 innodb_stats_notify_change = OFF 时,即使 InnoDB 在后台自动更新了统计信息(比如索引区分度 rec_per_key),也不会主动通知优化器,优化器会继续使用缓存的旧统计信息来生成计划。如果再叠加上 txsql_recalc_table_stats_after_manual_close = OFF,那么即使表被手动关闭后重新打开,也不会触发统计信息重算,进一步加剧了统计信息陈旧的问题,最终导致选错索引

一、检查参数

可以通过赤兔检查、也可以登录实例检查,接下来以赤兔为例

​​​

执行SQL检查

show variables like 'innodb_stats_notify_change'; show variables like 'txsql_recalc_table_stats_after_manual_close';

sql 复制代码
show variables like 'innodb_stats_notify_change';
show variables like 'txsql_recalc_table_stats_after_manual_close';

二、登录DB节点进行修改

示例以这个实例为基础,生产环境请改成对应的端口

修改参数

切记换成对应的实例端口号和set_id

需要修改的参数如下

.../conf/mysqlagent_4006.xml 换成对应的端口

--name=set_1778464209_8 换成对应的set_id

bash 复制代码
#进入工具目录,请选择相对应的端口 
cd /data/tdsql_run/4006/mysqlagent/bin/ 
#执行命令修改第一个参数,请注意修改实际的set_id
./mysql_param_modify --agent-conf='../conf/mysqlagent_4006.xml' --mode='modify' \ --param='param=innodb_stats_notify_change&value=ON' \ --name='set_1778464209_8'

完成后会出现Success! 和参数value变成ON

修改第二个参数,只需要改变--param值即可

bash 复制代码
#进入工具目录,请选择相对应的端口 
cd /data/tdsql_run/4006/mysqlagent/bin/ 
#执行命令修改第一个参数,请注意修改实际的set_id 
./mysql_param_modify --agent-conf='../conf/mysqlagent_4006.xml' --mode='modify' \ --param='param=txsql_recalc_table_stats_after_manual_close&value=ON' \ --name='set_1778464209_8'

三、登录赤兔检查

执行同样的SQL

sql 复制代码
show variables like 'innodb_stats_notify_change'; 
show variables like 'txsql_recalc_table_stats_after_manual_close';

​

相关推荐
IT古董2 小时前
《FDE前沿部署工程师实战教程》33 - Enterprise AI Observability:从Agent Trace到全链路智能运维
数据库·人工智能
for_ever_love__2 小时前
MySQL 主从复制讲透:binlog 原理、搭建步骤与读写分离
java·数据库·mysql·binlog·读写分离·原理·主从复制
Nturmoils7 小时前
GROUP BY 先别想当然,查汇总前把规则跑清楚
数据库
最笨的羊羊7 小时前
Oceanbase数据库系列之:向量数据库核心知识
数据库·oceanbase
fish_xk7 小时前
mysql中的表的约束
数据库·mysql
谢亮_vipxieliang7 小时前
Go Channel 高级模式——从底层原理到扇出扇入实战
java·数据库·golang
ggaofeng9 小时前
自己编写邮件服务器和客户端
数据库
java1234_小锋9 小时前
【技术专题】Mysql8 数据库 - Mysql8 添加,更新,删除数据
数据库·mysql
PaperData9 小时前
2015-2024年各省绿色贸易数据
数据库
小羊没烦恼!9 小时前
系统内部模块(子系统)之间的耦合以及模块(子系统)划分
java·开发语言·前端·数据库·算法·c#