当前位置: 首页 > 科技观察

慢SQL诊断优化例程包,如果正确使用例程,速度将提升一百倍

时间:2023-03-16 11:47:54 科技观察

在DBA的日常工作中,调整个别性能不佳的SQL语句是一项具有挑战性的工作。面对慢SQL,有些DBA会苦恼、沮丧、不知所措、冷静、斗智!关键在于数据库管理员如何分析SQL语句的执行计划,以及如何获取SQL语句的执行计划,发现计划有问题。下面老王给大家分享一些慢SQL诊断优化的常用套路~慢SQL诊断系统层面:检查系统服务器运行情况,磁盘I/O等;数据库层面:对于MySQL,通过慢日志定位慢SQL;对于慢SQL,查看其执行计划,分析耗时原因;如果缺少索引,则根据业务需要创建合适的索引;如果SQL语句的写法有问题,需要根据业务逻辑优化语句的写法。实用的SQL诊断工具:SQLTXPLAIN是Oracle专家开发的用于诊断SQL相关问题的工具。它易于使用但功能强大。慢SQL诊断支持很多Optimizer问题:比如执行计划异常、慢SQL、错误结果(WrongResult)等如字符串类型不带引号,数字类型不带引号等,可能会因为缺少索引导致全表扫描;mysql不支持函数转换,所以字段前不能加函数,否则索引将无法使用;不要在字段前面进行加减运算;如果字符串比较长,可以考虑做部分索引,减少索引文件的大??小,提高写入效率;like%前面没有使用索引;组合索引的第二个及以后的字段不用于独立查询;不要使用选择*;请使用升序排序;尝试使用union而不是orquery(Innodb);复合指数高选择性领域排名第一;orderby/groupby字段都包含在索引中,减少排序,效率会更高。请使用truncate删除表中的所有记录,不要使用delete以免mysql做不必要的事情,如:计算在Innodb上使用selectcount(*),因为Innodb会存储统计信息;谨慎使用rand()的Oder。开源SQL优化平台对于SQL语句的优化,现在有一些开源的SQL优化平台,融合了大量DBA工程师的经验,我们可以利用这些平台来优化SQL。1、SOAR地址:https://github.com/XiaoMi/soar/是小米运维DBA团队出品的SQL智能优化重写工具。SOAR主要由解析器、集成环境、优化建议、重写五个模块、逻辑和工具集组成,相比业界其他优秀产品有其自身的优势。它不仅可以帮助你重写SQL,还可以给出一些优化建议。2、SQLAdvisor地址:https://github.com/Meituan-Dianping/SQLAdvisor是由美团点评公司技术工程部DBA团队(北京)开发维护的一款分析SQL并给出索引优化建议的工具。它是在MySQL原生态词法分析的基础上,结合SQL中的条件、聚合条件、多表连接关系分析,给出索引优化建议。