ZBLOG

proxySQL如何检测SQL延迟

ProxySQL 检测 SQL 延迟的方法

ProxySQL 提供了多种方式来检测和监控 SQL 查询的延迟,这对于性能调优和故障排查非常重要。以下是主要的检测方法:

1. 通过 stats_mysql_query_digest 表监控

  1. SELECT hostgroup, schemaname, username, digest, digest_text,
  2. count_star, sum_time, sum_time/count_star AS avg_latency_ms
  3. FROM stats_mysql_query_digest
  4. ORDER BY sum_time DESC LIMIT 10;

这个查询会显示:

  • sum_time: 总执行时间(微秒)
  • count_star: 执行次数
  • avg_latency_ms: 平均延迟(毫秒)

2. 使用 ProxySQL Admin Interface

  1. -- 查看全局查询统计
  2. SELECT * FROM stats_mysql_global.query_response_time;
  3. -- 按百分位查看响应时间
  4. SELECT * FROM stats_mysql_global.query_response_time_percentile;

3. MySQL Monitor模块

ProxySQL的Monitor模块可以定期检查后端服务器的响应时间:

  1. -- 查看服务器状态和响应时间
  2. SELECT hostname, port, status, connect_success_time_us/1000 AS connect_latency_ms
  3. FROM mysql_servers;

4. Query Rules中的延迟控制

你可以在查询规则中设置最大执行时间:

  1. INSERT INTO mysql_query_rules (rule_id, active, match_pattern, destination_hostgroup,
  2. max_latency_ms)
  3. VALUES (10,1,'^SELECT.*FOR UPDATE',1,100);

当查询超过100ms时会被标记为慢查询。

5. Slow Query日志

启用慢查询日志记录:

  1. UPDATE global_variables SET variable_value='true' WHERE variable_name='mysql-log_slow';
  2. SET mysql-log_slow = true;
  3. LOAD MYSQL VARIABLES TO RUNTIME;
  4. SAVE MYSQL VARIABLES TO DISK;

6. Performance Schema集成

如果后端MySQL启用了performance_schema,可以通过ProxySQL获取更详细的性能数据。

TIPS:

  1. sum_time的单位是微秒(μs),除以1000得到毫秒(ms)
  2. ProxySQL默认每60秒重置一次统计信息,可通过调整stats_mysql_query_digest_reset_interval修改


    内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=23534

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?