MySQL的用户都面临都一个难题,异常或者故障问题难定位,很多时候都靠“猜”。
如果比较幸运,异常正在发生,我们还可以获取到会话、引擎状态等信息;
如果没有异常现场,要找到根因,除了慢日志、错误日志、性能监控外,可能就没有更多的可用信息帮助用户定位问题。
MySQL 从5.5版本开始,就出现了performance_schema,经过5.6版本和5.7版本的改进和增强,performance_schema提供了丰富的性能和诊断相关的信息。
DMS基于performance_schema,提供用户TOP SQL和全量SQL诊断功能,用户可以通过该功能快速的定位到异常SQL。
借助TOP SQL和全量SQL诊断功能,用户同时可以在以下三个方便获得收益:
SQL列表
SQL列表展示了选定时间范围内每一类SQL的SQL文本、耗时比例、平均耗时、平均扫描行数、首次出现时间、最后出现时间等信息。
耗时比例=(该类SQL执行耗时 执行次数)/(所有SQL执行耗时 总执行次数) * 100%
所以耗时比例越高的SQL,基本上可以理解为占用MySQL资源越多的SQL,优化该SQL,可以获取的更高的收益比,以下图的场景为例:
前提条件
用户获取权限并已登录DMS控制台。
[mysqld]
performance_schema=ON
update setup_consumers set ENABLED='YES' where name='statment_digest';
update setup_consumers set ENABLED='YES' where name='events_statements_history';
update setup_consumers set ENABLED='YES' where name='events_statements_history';
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
通过DMS(Data Management Services)的全量SQL诊断功能,用户在面对MySQL数据库性能问题和故障定位时,可以更加系统化和精细化地进行分析。以下是用户能够从TOP SQL和全量SQL诊断功能中获得的具体收益点:
快速定位性能瓶颈:TOP SQL列表直接展示了在选定时间范围内的高耗时SQL语句,按照耗时比例排序。这使得DBA或开发者能够迅速识别出哪些SQL查询是导致数据库资源紧张的主要原因,从而优先对这些SQL进行优化。
深入理解执行详情:除了耗时比例外,还提供了平均耗时、平均扫描行数等关键指标,帮助用户了解SQL执行的效率和对数据表的影响程度。首次出现时间和最后出现时间则有助于追踪问题发生的时间线,对于间歇性问题的排查尤为重要。
优化决策支持:基于SQL列表中的信息,用户可以评估不同SQL优化的潜在收益,优先处理那些能带来最大性能提升的查询。例如,减少高耗时SQL的执行次数,或者优化其执行计划以降低资源消耗。
历史趋势分析:开启events_statements_history_long
后,可以收集更长时间范围内的SQL执行记录,这对于分析长期性能趋势、识别周期性问题非常有帮助。
无侵入式监控:使用performance_schema进行监控不会直接影响到线上业务运行,相比传统日志分析,它提供了一种更为实时且详尽的监控方式,减少了对生产环境的干扰。
简化故障排查流程:通过DMS控制台直观的操作界面,用户无需手动编写复杂的SQL查询来分析performance_schema的数据,大大降低了故障排查的技术门槛,提高了运维效率。
网络流量考量:虽然提到DMS读取performance_schema数据可能产生公网流量,但作为云服务的一部分,用户应关注并合理配置VPC(虚拟私有云)规则,确保数据传输在安全的内部网络环境中进行,避免不必要的公网费用和安全性风险。
综上所述,借助DMS提供的TOP SQL和全量SQL诊断功能,用户不仅能够有效解决MySQL异常或故障难定位的问题,还能通过持续监控和优化,不断提升数据库的整体性能和稳定性。