首页 >> 通信 >> 慢sql治理经典案例交友

慢sql治理经典案例交友

2025-02-27 通信

中,不必需回查聚簇参考资料;

5、使用参考资料照相来动手排列;

6、在遵守最左形容词的法理下,尽量扩展参考资料,而不是创建参考资料。

但凡记得第3和6法则,也不至于把参考资料建成这样。

3 管理制度

对参考资料进行紧密结合如下:

系统之中亦有很多指派拉取整个新产品下的新制度据信,然后进行解决问题,所以将区分度较较高的product_code置放参考资料历来,然后纳到rule_name、status配置文件到参考资料里,进一步屏蔽为统计数据,减少照相行为数,避免很慢sql。针对常用的rule_value查找前提,可以命之中UK,因此不用实际上创设参考资料。

三 非必要排列

1 弊端描述

很多业务范围演算之中,必需拉取满足某个前提的据信奇科注记,查找的sql上下文隐含order by,据信比较多的上述情况,排列代价通常相当大,但是查找出新来的据信究竟有序对业务范围演算没阻碍,比如分页管理制度里讨论的count上下文,只必需统计条为数,order by对条为数没阻碍,再比如查出新据信奇科注记后,不依赖据信的先后顺序遍历奇科注记解决问题为统计数据,这时候order by多此一举。

2 提供商

查找sql无limit上下文,且业务范围解决问题演算不举例来说order by后奇科注记据信的先后顺序,则转换成查找sql之中的order by上下文。

四 粗粒度查找

1 弊端描述

业务范围之中亦有很多除此以外指派,照相某个注记之中某个新产品下所有为统计数据,对为统计数据进行解决问题,比如:

SELECT * FROM XXX_rules

WHERE rule_name = 'apf_distributors'

AND status = '00'

AND product_code = 'ADVANCE'

三个查找前提都是区分度不较高的奇科,查出新的为统计数据有27W条,纳参考资料象征意义也毕竟大。

2 分析

实际业务范围量没那么大,起码几千条为统计数据,注记里的为统计数据是从上游除此以外跟着的,最好的急于是让上游精简为统计数据,但是由于业务范围毕竟久远,找上游的人维护难度毕竟大,因此只能想其他的急于。

这个除此以外指派目的是拉出新XXX_rules注记的某些新产品下的为统计数据,和另一张注记为统计数据对比,更新有差异性的为统计数据。每天凌晨解决问题,对时效性没很较高的要求,因此,能很难转移指派解决问题的地方,不出本分析分析方法电脑上实时解决问题那么多条为统计数据?

3 提供商

为统计数据是FTP指派odps除此以外跟着的,首先知道的就是dataWork为统计数据分析平台。

创设为统计数据对比指派,将除此以外指派动手的为统计数据对比演算摆在dataWork上用sql借助,每天差异性为统计数据总共几百条,且结果集成分区分度很较高的奇科,将差异性为统计数据读取odps注记,再将为统计数据回流到idb。

增建除此以外指派,通过回流回来的差异性为统计数据之中区分度较高的奇科作为查找前提查找XXX_rules,更新XXX_rules,解决了很慢sql弊端。

这个分析方法的前提是对为统计数据实效性要求不较高,且FTP产出新的结果集很小。

五 OR导致参考资料失效

1 犯罪行为

SELECT count(*)

FROM XXX_level_report

WHERE 1 = 1

AND EXISTS (

SELECT 1

FROM XXX_white_list t

WHERE (t.biz_id = customer_id

OR customer_id LIKE CONCAT(t.biz_id, '@%'))

AND t.status = 1

AND (t.start_time

OR t.start_time IS NULL)

AND (t.end_time>= CURRENT_TIME

OR t.end_time IS NULL)

AND t.biz_type = 'GOODS_CONTROL_BLACKLIST'

2 分析

explain上述查找上下文,得到结果如下:

XXX_white_list注记有将biz_id作为参考资料,这里查找XXX_white_list注记有传入biz_id作为查找前提,为啥explain结果里type为ALL,即照相全注记?参考资料失效了?参考资料失效有哪些上述情况?

参考资料失效场景

1、OR查找左右有从未命之中参考资料的;

2、复合参考资料不满足最左匹配法理;

3、Like以%开头;

4、必需类型转换;

5、where之中参考资料奇科有运算;

6、where之中参考资料奇科使用了函为数;

7、如果mysql觉得全注记照相更快时(为统计数据少时)

上述查找上下文第8行,customer_id为XXX_level_report注记配置文件,从未命之中XXX_white_list注记参考资料,导致参考资料失效。

3 提供商

这个上下文用condition、枚举、join花里胡哨的代码拼接起来的,改以起来好更糟,而且看来“OR customer_id LIKE CONCAT(t.biz_id, '@%')”这句很难必要删掉。最终重构了该部分的查找上下文,转换成or查找,解决了很慢sql。

本文为阿里云原创内容,从未经允许不得刊发。

武汉白癜风医院专家预约挂号
成都白癜风治疗费用是多少
郑州哪家医院治疗癫痫比较好
视疲劳会影响视力吗
科兴制药常乐康
扭伤可以吃什么止痛药
有机黄芪和普通黄芪区别是什么?
波比宁
友情链接