|
|
|
|
移动端

一路发物流:记一次生产数据库sql优化案例--23秒优化到0.9秒

本文来源:http://www.144865.com/www_piaoliang_com/

申博太阳开户优惠直营网,  杜兰特全场17投5中,三分球5投1中,6罚5中,得到16分、8个篮板和7次助攻。  【解说】办案民警表示,姚某属于团伙下线,他通过QQ、微信对全国各地美容院及个人宣传美容产品。2014年12月初,Zespri佳沛新西兰奇异果「奇分享·爱永续」公益团队首次来到国家级贫困县重庆云阳,探访43名就读于永富小学的山村留守学童,为孩子们建立全新的美术教室,提供必备的画具、画架及学习用品,并透过「奇异多彩课堂」中对音乐、美术、体育的趣味启蒙课程,丰富山村学童的精神世界,分享来自城市家庭的善意与关爱。昨日钟汉良隐婚新闻出炉,占据各大门户网站头条,同事不解地问我:“他还红吗?”我赶紧提醒她小点声儿:“小心良民们唾沫星子喷你一脸。

韦小宝率人护送建宁公主入滇,两人本就相识,未到云南就发生私通,赐婚使变成了驸马爷。  【同期】著名演员鹿晗  其实要做一个传播正能量的艺人,所以这个压力一直也促使做我自己,做到最好的,做正能量给大家,希望大家都可以能够受到我的影响会越来越好,(你觉得你可以带给大家的正能量是什么?)我觉得有梦想就一定要去追,就是不管怎么样,一定要努力去追,就千万不要放弃梦想。  杰夫·格林,奥兰多魔术  这也许是今夏最令人疑惑的一笔签约,在魔术队签下格林前,球队的内线阵容已经饱和。有网友感叹:这已经是全世界最贵的明星演唱会门票了,感觉去看王菲演唱会已经成为显摆大赛,能弄到票的人,就是有资源、门路和地位的。

昨晚深圳对北京的比赛,用煮熟的鸭子飞走了来形容非常贴切,最后两分多钟还领先北京6分,眼见胜利在望,送给北京两连败,但最后还是北京逆转,让煮熟的鸭子飞走了,使得懊恼弥漫深圳更衣室,有一个失败者甚至久久不愿离开。看到这一群男生的疯狂举动,女老师显得惊慌失措,先是好言相劝不断说着:“不要闹啦!我有男朋友了!”还伸手欲将男生拉起。”  郭艾伦特别提到了今年里约奥运会上中国男篮与世界高水平球队的差距,“中国球员应该更努力,在世界大赛的经历方面,我们欠缺比较多。  二、关于涉及拼音“QIAODAN”的四件案件,以及涉及拼音“qiaodan”与相关图形组合商标的三件案件,因迈克尔-杰弗里-乔丹对拼音“QIAODAN”“qiaodan”不享有姓名权,争议商标的注册未损害再审申请人的在先姓名权,争议商标也不属于商标法规定的“有害于社会主义道德风尚或者有其他不良影响”“以欺骗手段或者其他不正当手段取得注册”的情形,故判决维持二审判决,驳回迈克尔-杰弗里-乔丹的再审申请。

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

作者:波波说运维来源:今日头条|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. 深入剖析 MySQL 索引和 SQL 调优实战
  2. MySQL数据库监控指标之执行性能总结
  3. 详解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官微

太阳城申博官方直营网 申博安卓手机下载 www.44psb.com www.sun5851.com www.99msc.com 申博网址大全直营网
sun138.comwww www.51tyc.com 太阳城娱乐138申博直营网 申博138娱乐直营网 旧版太阳城申博现金直营网 申博开户现金网直营网
菲律宾申博官网登入 申博138娱乐登入 申博太阳城娱乐网直营网 申博电子游戏备用网址 申博138注册直营网 申博游戏中心直营网