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';

相关推荐
whn19771 小时前
达梦连接串JDBC测试程序
java·数据库
让头发掉下来1 小时前
Flink SQL 中两个频繁变化 Topic 的 Join 行为分析
大数据·数据库·sql·flink
小书房2 小时前
KMP跨平台之数据库
数据库·kmp
2401_894915532 小时前
GEO 定位优化源码搭建常见报错排查:数据库、伪静态、接口调试
java·数据库·网络协议·tcp/ip·spring·unity
math_hongfan2 小时前
鸿蒙存储碎片高级清理机制:数据库Vacuum/文件碎片整理/缓存过期清理/主动空间回收策略
jvm·数据库·学习·缓存·华为·harmonyos·鸿蒙
奇树谦2 小时前
《现代 Key-Value 数据库原理:从 B+Tree 到 LSM Tree》-第三篇:LMDB 深度解析二
数据库·oracle·lsm-tree
提笔了无痕2 小时前
Agent 上下文管理详解、Context设计与构建
数据库·oracle·agent·context
用户7152287381413 小时前
数据库字段冗余,真的只是用空间换时间吗?
数据库
沉下去,苦磨练!3 小时前
Human‑in‑the‑Loop
数据库·oracle