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

修改一行SQL代码 性能提升了100倍

发布时间:2018-04-16 14:23:11 所属栏目:编程 来源:CSDN
导读:副问题#e# 在PostgreSQL中修改了一行不明明的代码,把(ANY(ARRAY[...]) 改成 ANY(VALUES(...))),功效查询时刻从20s变为0.2s。最初我们进修行使EXPLAN ANALYZE来优化代码,到其后,Postgres社区也成为我们进修晋升的一个好协助,支付总会有回报,我们产物
副问题[/!--empirenews.page--]

在PostgreSQL中修改了一行不明明的代码,把(ANY(ARRAY[...]) 改成 ANY(VALUES(...))),功效查询时刻从20s变为0.2s。最初我们进修行使EXPLAN ANALYZE来优化代码,到其后,Postgres社区也成为我们进修晋升的一个好协助,支付总会有回报,我们产物的机能也因此获得了极大的晋升。

事出有因

我们所开拓的产物是Datadog,它是专门为那些编写和运营大局限应用的团队、IT运营商提供监控处事的一个平台,辅佐他们把海量的数据转化为切实可行的打算、操纵方案。而在这周早些时辰,我们的许大都据库所面对的一本机能题目是在一个较小的表长举办大量的key查询。这些查询中的99.9%都是高效机动的。在少少数实例中,有些数目的机能指标tag查询是费时的,这些查询必要耗费20s时刻。这也就意味着用户必要在赏识器眼前耗费这么长的时刻来守候图形编辑器做出相应。纵然是0.1%,这样的用户体验也显然糟透了,对此,我们举办了监测,探讨为何速率会这么慢。

查询与打算

功效令人震惊,祸首罪魁竟然是下面这个简朴的查询:

X表拥有上千行数据,C表拥有1500万行数据,这两个表的“key”列都带有恰当的索引主键。简朴地说,它就是一个简朴的主键查询。但风趣地是,跟着key列中记录的增进,譬喻在11000行时,我们通过添加EXPLAIN (ANALYZE, BUFFERS)前缀来查察key列的值是否与数组中的值匹配:

(编辑:河北网)

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

热点阅读