加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

慢SQL诊断优化套路包,套路用的对,速度升百倍

发布时间:2019-06-14 17:31:03 所属栏目:编程 来源:老王谈运维
导读:在DBA的一般事变中,调解个体机能较差的SQL语句是一项富有挑衅性的事变。面临慢SQL,一些DBA会意烦,会沮丧,会束手无措,也会岑寂沉着、斗智斗勇!傍边的要害在于数据库打点员怎样说明得出SQL语句的执行打算和怎样从SQL语句的执行打算中发明题目。 下面老

在DBA的一般事变中,调解个体机能较差的SQL语句是一项富有挑衅性的事变。面临慢SQL,一些DBA会意烦,会沮丧,会束手无措,也会岑寂沉着、斗智斗勇!傍边的要害在于数据库打点员怎样说明得出SQL语句的执行打算和怎样从SQL语句的执行打算中发明题目。

SQL

下面老王就慢SQL的诊断和优化分享一些常用的套路~

慢SQL诊断

体系层面:搜查体系处事器运行环境,磁盘 I/O 等;

数据库层面:

  • 对付MySQL来说,通过慢日记定位慢SQL;
  • 对付慢SQL,查察其执行打算,说明耗时的缘故起因;
  • 假如缺失索引,按照营业需求,建设吻合的索引;假如因为SQL语句的写法有题目,必要按照营业逻辑优化语句的写法。

适用的SQL诊断器材:SQLTXPLAIN

是Oracle专家开拓的,用于诊断SQL相干的题目的器材,简朴易用却成果强盛。

对付慢SQL诊断支持许多Optimzer题目:如执行打算非常、SQL慢、功效不正(Wrong Result)等。

慢SQL优化

由 SQL 编写导致的慢 SQL 的优化提议:

  • 字段范例转换导致不消索引,如字符串范例的不消引号,数字范例的用引号等,这有也许会用不到索引导致全表扫描;
  • mysql 不支持函数转换,以是字段前面不能加函数,不然这将用不到索引;
  • 不要在字段前面加减运算;
  • 字符串较量长的可以思量索引一部份镌汰索引文件巨细,进步写入服从;
  • like % 在前面用不到索引;
  • 按照连系索引的第二个及往后的字段单独查询用不到索引;
  • 不要行使 select *;
  • 排序请只管行使升序 ;
  • or 的查询只管用 union 取代 (Innodb);
  • 复合索引高选择性的字段排在前面;
  • order by / group by 字段包罗在索引傍边镌汰排序,服从会更高。
  • 删除表全部记录请用 truncate,不要用 delete
  • 不让 mysql 干多余的工作,如:计较
  • 在 Innodb上用 select count(*),由于 Innodb 会存储统计信息;
  • 慎用 Oder by rand()。

开源 SQL 优化平台

对付 SQL 语句的优化,此刻有一些开源的SQL优化平台,这些融入了大量DBA工程师的履历,我们可以借助这些平台对 SQL 举办优化。

1. SOAR

地点:https://github.com/XiaoMi/soar/

是一款 SQL 智能优化与改写器材,由小米运维 DBA 团队出品,SOAR 首要由语法理会器、集成情形、优化提议、重写逻辑、器材集五大模块构成,对比业内其他优越产物有本身的上风,不只能辅佐你 rewrite SQL而且能给出一些优化的提议。

慢SQL诊断优化套路包,套路用的对,速率升百倍

2. SQLAdvisor

地点:https://github.com/Meituan-Dianping/SQLAdvisor

是由美团点评公司技能工程部DBA团队(北京)开拓维护的一个说明SQL给出索引优化提议的器材。它基于MySQL的原生态词法理会,团结说明SQL中的个中前提,聚合前提,多表插手相关给出索引优化提议。

【编辑保举】

  1. 说明NoSQL较量火的三个数据库Memcached、Redis、MongoDB
  2. MySQL痿了,放不下这么大都据!
  3. 除了不要 SELECT *,数据库尚有哪些能力
  4. 从零写一个时刻序列数据库
  5. Oracle数据库差异破坏级此外规复详解
【责任编辑:赵宁宁 TEL:(010)68476606】
点赞 0

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读