设为首页 收藏本站
查看: 1816|回复: 1

[经验分享] 一次postgresql效率优化过程

[复制链接]
累计签到:224 天
连续签到:4 天
发表于 2019-12-3 15:25:10 | 显示全部楼层 |阅读模式
之前在做项目的时候遇到一个性能问题,每每想起都心有余悸,记下来以作前车之鉴。

问题描述:
    前台调用查询测试用例库的树数据,如果库下的用例集数量较多,同时用例集层级深时,查询耗时超过5秒甚至10秒(postgresql)。

问题分析:
    通过分析查询的SQL语句发现,在执行查询的时候,会通过递归去查询统计每一个用例集直到最上级用例库中的测试用例数量,数据量大时时间开销自然就大了。

解决方案:
    单纯从SQL入手,对于性能的影响不大,因此考虑到将统计放到其它地方,此处只作查询处理。对于一个用例库来说,80%的操作是查询,剩下的才是创建测试用例,统计数量的过程如果放到用户较少遇到的操作中,对用户的影响就降到了最低。
    解决步骤如下:
        1、用例库表增加三列:有效用例数、无效用例数、草稿用例数。用于保存每个用例集下的用例数量;
        2、修改创建测试用例逻辑。创建用例后实时计算当前用例所在的用例集以及上级所含有的用例数量,更新到用例库表中;
        3、修改查询用例库树的SQL。去掉之前的统计计算过程,直接取对应的字段即可。
再次查询用例库树,查询效率大大提高,从之前的5~10秒提高到现在毫秒级,bingo。
最后的反思——将性能开销较大的操作放到用户百分之二十或者更少的操作中,查询则尽可能避免递归统计等耗时操作(递归是个好东西,但要慎用),而此处创建用例时,只更新当前操作用例集所在的节点,对创建的效率也并无多少影响。而增加了三列,对于整个性能的提升起了非常大的作用,适当的增加“冗余”列,带来的却是莫大的方便,值!



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-989116-1-1.html 上篇帖子: postgresql9.6主从高可用源码环境编译配置详解 下篇帖子: 怎么没有greenplum的分类呢?
累计签到:2006 天
连续签到:1 天
发表于 2020-5-13 21:43:50 | 显示全部楼层
看了LZ的帖子,我只想说一句很好很强大!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表