当前位置: 首页 > news >正文

慢SQL排查步骤

验收指标(造数是否“像生产”)

t 规模(过滤后行数)
SELECT COUNT() AS t_rows
FROM dd_data_dictionary
WHERE source_server=? AND schema_name=? AND system_name=?;
每表列数分布(P50/P90/Max)
SELECT table_eng_name, COUNT(
) AS cols
FROM dd_data_dictionary
WHERE source_server=? AND schema_name=? AND system_name=?
GROUP BY table_eng_name
ORDER BY cols DESC;
t 唯一性(是否有重复 key)
SELECT COUNT() AS total,
COUNT(DISTINCT CONCAT_WS('#',source_server,schema_name,system_name,table_eng_name,column_eng_name)) AS distinct_keys
FROM dd_data_dictionary
WHERE source_server=? AND schema_name=? AND system_name=?;
t2 规模与唯一性(join key)
SELECT COUNT(
) AS t2_rows,
COUNT(DISTINCT CONCAT_WS('#',source_server,table_schema,system_name,table_name,column_name)) AS distinct_keys
FROM dd_source_table_column
WHERE source_server=? AND table_schema=? AND system_name=?;
join 命中率(t 中有多少能在 t2 找到)
SELECT
SUM(t2.column_name IS NOT NULL) AS hit_rows,
COUNT() AS total_rows,
SUM(t2.column_name IS NOT NULL)/COUNT(
) AS hit_ratio
FROM dd_data_dictionary t
LEFT JOIN dd_source_table_column t2
ON t.source_server=t2.source_server
AND t.schema_name=t2.table_schema
AND t.system_name=t2.system_name
AND t.table_eng_name=t2.table_name
AND t.column_eng_name=t2.column_name
WHERE t.source_server=? AND t.schema_name=? AND t.system_name=?;
差异命中率(OR 条件命中占比,决定返回量/过滤强度)
SELECT
SUM(
t.column_type<>t2.column_type
OR t.column_length<>t2.column_length
OR t.is_primary_key<>t2.is_primary_key
OR t.is_union_key<>t2.is_union_key
OR t.is_foreign_key<>t2.is_foreign_key
OR t.is_nullable<>t2.is_nullable
OR t.numeric_precision<>t2.numeric_precision
OR t.numeric_scale<>t2.numeric_scale
OR t.column_chn_name<>t2.column_comment
OR t.table_chn_name<>t2.table_comment
) AS diff_rows,
COUNT() AS joined_rows,
SUM( ...同上... )/COUNT(
) AS diff_ratio
FROM dd_data_dictionary t
JOIN dd_source_table_column t2
ON t.source_server=t2.source_server
AND t.schema_name=t2.table_schema
AND t.system_name=t2.system_name
AND t.table_eng_name=t2.table_name
AND t.column_eng_name=t2.column_name
WHERE t.source_server=? AND t.schema_name=? AND t.system_name=?;
异常表占比(被排除的表有多少)
SELECT COUNT(DISTINCT table_name) AS exception_tables
FROM dd_exception_table
WHERE source_server=? AND schema_name=? AND system_name=?;
ST 造数步骤(用 dd_data_dictionary 做种子)

清理并准备本轮 t2(保持你们跑批习惯:TRUNCATE)
TRUNCATE TABLE dd_source_table_column;
用 t 生成 t2 基础数据(保证大部分 join 命中)
做法:按 join key 把 t 的一批行映射进 t2;其他字段先“拷贝同值”或填默认值(字段映射需要你按 dd_source_table_column 实际列名补齐)。
造数目标建议:先做到 hit_ratio >= 0.98
制造“缺失行”(让少量 join 不命中,覆盖边界)
随机删掉 t2 的 0.5%~2% 行(按你想要的缺失比例)
制造“差异”(让 OR 条件命中)
按 1% / 5% / 20% 三档分别跑一遍:随机挑行把 column_type/column_length/column_comment/table_comment 之一改掉(每行改 1 个字段就够)
准备 dd_exception_table(造 0 行、少量、5% 三档)
刷新统计信息(避免 ST 上估算乱跳)
ANALYZE TABLE dd_data_dictionary, dd_source_table_column, dd_exception_table;
复现“偶发 100s”的执行法(和造数无关但必须做)

保持跑批并发与生产一致,并在每轮前 TRUNCATE dd_source_table_column
同时开一个会话循环执行 SHOW FULL PROCESSLIST;,一旦慢,确认是否出现 Waiting for table metadata lock
把 SHOW CREATE TABLE dd_source_table_column\G 贴出来后,我可以把第 2 步的 INSERT INTO dd_source_table_column (...) SELECT ... FROM dd_data_dictionary ... 这一段按你们真实列一对一写成可直接执行的版本(含“差异/缺失/异常”三档脚本)。

http://www.jsqmd.com/news/135932/

相关文章:

  • uds31服务在多核ECU中的同步处理方案
  • 长沙市哪里能开病假条诊断证明
  • Keil C51软件安装通俗解释:新手友好型教学
  • GPT-SoVITS语音克隆用户协议模板:商业授权参考
  • GPT-SoVITS模型微调技巧:如何用更少数据获得更好效果
  • STM32 touch固件库移植:HAL库适配完整示例
  • 淮安市哪里能开病假条诊断证明
  • Keil uVision5安装常见问题解析:入门必读全面讲解
  • 12 类元旦核心 SVG 交互方案拆解
  • 微信小程序智慧社区报修管理系统
  • Linux中级のNginx HTTPS实践
  • GPT-SoVITS语音克隆法律边界探讨:版权归属如何界定?
  • 连云港市哪里能开病假条诊断证明
  • GPT-SoVITS支持ROCm吗?AMD显卡运行可行性
  • 【EI复现】梯级水光互补系统最大化可消纳电量期望短期优化调度模型(Matlab代码实现)
  • STM32低功耗模式下LED工作策略分析
  • 软工作业6--复审
  • ViGEmBus虚拟手柄驱动终极指南:从技术原理到实战精通
  • 一文说清单片机外部中断在Proteus仿真中的实现
  • 2025研究生必备!9个降AI率工具测评榜单
  • GPT-SoVITS语音合成教程:从镜像部署到模型训练全流程
  • GPT-SoVITS语音克隆未来趋势预测:三年内将如何演进?
  • GPT-SoVITS与RVC对比:哪个更适合语音克隆新手?
  • 微信小程序球鞋购物商城收藏系统
  • 声音情感计算新进展:GPT-SoVITS情绪识别联动
  • 2025年度最新无动力无阀滤池水处理设备公司top5推荐!优质厂家选择指南,服务范围覆盖陕西甘肃新疆青海宁夏等地 - 全局中转站
  • STM32CubeMX安装包手把手安装步骤详解(小白适用)
  • GPT-SoVITS语音合成动态范围分析:高低频表现均衡性
  • 2025年企业AI数据资产评估新趋势:AI应用架构师必须掌握的3大方向
  • 5个实用技巧:轻松解决Unity游戏多语言显示难题