|
|
|
|
移动端

bo18白菜论坛:记一次生产数据库sql优化案例--23秒优化到0.9秒

本文来源:http://www.344078.com/www_83133_com/

www.86msc.com,“特朗普大厦”高58层,所在的第五大道是纽约市最繁华街区之一,人流密集,平日也经常拥堵,在12月的圣诞节、新年假期前后更是拥挤不堪,而这一时间段正与特朗普上任前的过渡期“撞车”。告别传统的天线式雷达,全面采用相控阵雷达技术的空警-2000,可以做到在飞机有限的重量和平台上装置功率最大的雷达,使得65吨的飞机拥有与190吨飞机一样的测控能力,比美国的E-3C预警机整整领先一代。尤其是对某些鱼、蛋过敏的孩子更应注意避免这类食物,其中以白鲢、带鱼影响最大。当然,这是后话。

同盟会在这一点上持反对态度,认为不应当对驻防旗人进行过于残酷的屠杀。一看眼熟,是团部警通排的,个个面部表情严肃,我心说这半夜三更的谁来了呢?定睛一看,不好,参谋长来了!  2、与此事相关的另一个微信公众帐号P2P观察(微信号:p2pguancha)的注册使用人刘侠风先生将该微信公众帐号下《耶稣,请别让我做你的敌人》一文的全部赞赏资金原路退回至网友,经核算,共计101110.79元。“全班四五个学员,就我一个是男的。

我理发什么都不求,只想平时有个人跟我说说话就可以了。据外媒报道,《时代》杂志2016年年度人物将于当地时间周三早晨(北京时间周三晚间)公布。  记者:这个研究能否得出北京雾霾现耐药菌,人类最后的抗生素对它无效导致药物失去作用等结论?  拉尔森:不能,我们的研究并不能得出如此结论。  协助调查本身并不是拘留,现在能够现身公司年会,也不代表就完全结束了协助调查,也可能是有限制条件的。

新项目业务人员反馈说最近订单发放模块经常很卡,导致总是有锁的情况发生,在用慢查询和开启锁监控观察后发现实际上只是单条查询慢造成的阻塞锁,这里考虑先对单条查询做一下优化。

作者:波波说运维来源:今日头条|2019-09-27 17:24

新项目业务人员反馈说最近订单发放模块经常很卡,导致总是有锁的情况发生,在用慢查询和开启锁监控观察后发现实际上只是单条查询慢造成的阻塞锁,这里考虑先对单条查询做一下优化。

一、优化前的表结构、数据量、SQL、执行计划、执行时间

1. 表结构

A表有90个字段,B表有140个字段。

记一次生产数据库sql优化案例--23秒优化到0.9秒

2. 数据量

  1. select count(*) from A; 
  2. --166713 
  3. select count(*) from B; 
  4. --220810 

3. sql

开启慢查询观察到慢sql如下,单条执行只取200条记录是在23秒左右。

  1. select ob.id, ob.customer, ob.order_no1, ob.accountingitems_code, ob.insert_date, ob.weight,  
  2. ob.volume, ob.qty, ob.project_code,ob.order_no2,ob.order_type1  
  3.  from A as ob  
  4. where ifnull(ob.project_code,'')<>'' and ifnull(ob.accountingitems_code,'')<>''  
  5. and ob.if_cost_proof='N'  
  6. and EXISTS (select 1 from B ol where ob.id=ol.order_base) limit 200; 

记一次生产数据库sql优化案例--23秒优化到0.9秒

记一次生产数据库sql优化案例--23秒优化到0.9秒

4. 执行计划

记一次生产数据库sql优化案例--23秒优化到0.9秒

思路

这两张表都是订单表,全国各地的每天大概会产生十万行左右,这里又是全扫,等后期达到上千万的数据就GG了。目前只是看到这个sql上的问题,先考虑exists部分做一下改写。

二、exists部分改写

  1. select ob.id, ob.customer, ob.order_no1, ob.accountingitems_code, ob.insert_date, ob.weight,  
  2. ob.volume, ob.qty, ob.project_code,ob.order_no2,ob.order_type1  
  3.  from fsl_order_base as ob,fsl_order_base_line ol 
  4. where ob.id=ol.order_base and ob.if_cost_proof='N' and 
  5. ifnull(ob.project_code,'')<>'' and ifnull(ob.accountingitems_code,'')<>'' limit 200; 

执行时间:耗时1.8秒

记一次生产数据库sql优化案例--23秒优化到0.9秒

对应的执行计划:

可以看到ob表走了主键索引

记一次生产数据库sql优化案例--23秒优化到0.9秒

业务确认结果符合需求,那就在这基础上建一下索引吧!

三、ol表建索引

  1. create index idx_obl_id on fsl_order_base_line(order_base); 
  2. create index idx_ob_id_cost on fsl_order_base(id,if_cost_proof); 

加上去但实际上用不到这个索引,选择去掉

记一次生产数据库sql优化案例--23秒优化到0.9秒

四、查看执行时间和执行计划

耗时1.1秒,可惜执行计划还是走了全扫,在对ob表建了索引实际上也用不到,最终只在ol表建了索引。

记一次生产数据库sql优化案例--23秒优化到0.9秒

记一次生产数据库sql优化案例--23秒优化到0.9秒

五、考虑用join改写

把ob结果集缩小,然后再做关联查,并测试是否可以用上索引。

  1. SELECT 
  2.  obc.id, 
  3.  obc.customer, 
  4.  obc.order_no1, 
  5.  obc.accountingitems_code, 
  6.  obc.insert_date, 
  7.  obc.weight, 
  8.  obc.volume, 
  9.  obc.qty, 
  10.  obc.project_code, 
  11.  obc.order_no2, 
  12.  obc.order_type1  
  13. FROM 
  14.  (select * from fsl_order_base AS ob where ob.if_cost_proof = 'N' and ifnull( ob.project_code, '' ) <> '' and ifnull( ob.accountingitems_code, '' ) <> '' ) obc 
  15.  join 
  16.  fsl_order_base_line ol  
  17.  on obc.id = ol.order_base limit 200; 

时间快了一点,但不是很明显,先凑合吧

记一次生产数据库sql优化案例--23秒优化到0.9秒

执行计划保持不变。

记一次生产数据库sql优化案例--23秒优化到0.9秒

总结

建索引前因为走了主键索引,所以时间在1.6秒这样,建索引后不走主键索引了,走ol表的索引,所以在1.5秒,然后缩小结果集去查的话就在1s这样。

更重要的是这两个表一个90个字段,一个150个字段,所以这两个表的关联查后期结果集应该还是会很大,建议是弄成分区表的形式,表能拆分的话是最好的。这些长度不要直接给那么大,这么宽对性能都是有影响的。

记一次生产数据库sql优化案例--23秒优化到0.9秒

【编辑推荐】

  1. www.86msc.com深入剖析 MySQL 索引和 SQL 调优实战
  2. MySQL数据库监控指标之执行性能总结
  3. www.86msc.com详解MySQL数据库监控指标之连接状态
  4. 高并发环境下如何让Redis和MySQL保持数据统一
  5. 阿里面试MySQL灵魂拷问20题,Java程序员秋招必会的8个知识点
【责任编辑:赵宁宁 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

订阅专栏+更多

用Python玩转excel

用Python玩转excel

让重复操作傻瓜化
共3章 | DE8UG

175人订阅学习

AI入门级算法

AI入门级算法

算法常识
共22章 | 周萝卜123

157人订阅学习

这就是5G

这就是5G

5G那些事儿
共15章 | armmay

128人订阅学习

视频课程+更多

网络工程师(HCNA |CCNA | HCNP实验)

网络工程师(HCNA |CCNA | HCNP实验)

讲师:郝旺53467人学习过

大型电商高并发与秒杀实战视频课程

大型电商高并发与秒杀实战视频课程

讲师:齐毅82434人学习过

小白轻松学Spring Cloud

小白轻松学Spring Cloud

讲师:齐毅79385人学习过

读 书 +更多

非常网管——网络应用

在网络应用越来越复杂的今天,传统的网络应用已经不能满足企业和用户的需要,这就对网络管理员、信息管理部门提出了更高的要求。本书介绍了...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊

51CTO服务号

51CTO官微

菲律宾太阳娱乐管理登入 电子游戏微信支付充值 太阳城在线存款登入 申博太阳城在线即时到账 ab7777.com 申博怎么申请提款
www.sb87.com 申博娱乐网址 www.99sb.com www.99msc.com www.55sbc.com 太阳城申博娱乐www.sbc66.com
菲律宾太阳娱乐登入网址 太阳成菲律宾网站 申博游戏安卓系统下载 菲律宾申博开户登入 菲律宾申博官网怎么登入 申博官方太阳城赌场直营网