SQL优化思路

SQL优化步骤

1.   使用pt-query-digest分析慢日志,拿到调用频率高并且执行时间长的语句。

2.   获取语句相关表的信息,以及explain等相关信息,一般收集如下信息

  • l  执行计划:explain query;
  • l  详细执行计划:explain extended query;show warnings;
  • l  相关表信息:show create table test1;
  • l  语句执行开销:show profile for query num;
  • l  数据量:select count(0) from table;
  • l  相关表的索引信息:show index for table;
  • l  my.cnf查询相关参数如各类buffer等

3.   进行初步分析,诊断SQL语句,查看在SQL层面能否带来提升,一般应对手段如下

  • l  条件上拉、下推
  • l  子查询合并、展开
  • l  添加索引、优化索引
  • l  distinct、group by、orderby尽量利用索引减少文件排序
  • l  子查询尽量转换为join,最好消除
  • l  尽量减少聚合函数,将复杂查询转换为多表链接
  • l  尽量优化等价谓词,尽可能利用索引
  • l  join的一些优化,连接消除、去除中间表等

4.   SQL无优化空间考虑从业务逻辑层面入手。常用手段如下

  • l  增加冗余字段
  • l  拆分表(水平/竖直)
  • l  使用分布式
  • l  将大事务拆分为多个小事务
  • l  精简数据库的设计,减少使用存储过程、触发器等

5.   对硬件进行优化,升级服务器硬件。

 

3、4步骤可与调整系统参数相结合,具体使用方法视具体业务而定。

 

 

优化投入收益如下

业务优化投入大,收益大

语句优化投入小,收益大

硬件优化投入大,收益小

 

优化优先级为语句优化>业务优化>硬件优化

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值