您现在的位置是:网站首页 > 代码编程 > JAVA开发JAVA开发
【原】PostgreSQL分页count超级无敌巨慢
不忘初心 2019-04-24 围观() 评论() 点赞() 【JAVA开发】
简介:最近碰到了一个关于PostgreSQL查询慢的问题,表中数据共有40W,在做分页查询的时候,COUNT竟然花了20s,而且这个还是不稳定的,有时甚至能飙到40s
最近碰到了一个关于PostgreSQL查询慢的问题,表中数据共有40W,在做分页查询的时候,COUNT竟然花了20s,而且这个还是不稳定的,有时甚至能飙到40s,这个时间真的是让人不能接受。
来张图大家感受一下,抓包看到请求的TTFB竟然有26s多,真他吗让人害怕
在没具体细看的时候,我第一反应是数据太多,limit查询太慢导致拖慢了整个请求,后来在Navicat中查询了一下,发现limit响应还是很快的,甚至是毫秒级别的响应,问题分析到了这里,都还没想到是count出了问题。
多次测试之后,发现每隔一段时间查询就会慢一次,而连续操作则很流畅,分析可能是由于在mybatis中加了二级缓存,所以在第一次以后的查询时,速度又很快。
期间朋友想到是否可能是count太慢,我当时心里觉着不可能,但还是将sql打印出来看了一下,结果分分钟打了我的脸,还真的是count耗时太久
上图中我用红色框起来的sql,第一次查询耗时30s,以为是where条件没有加索引导致了全表扫描,检查之后发现是有索引的
没办法,只能找度娘,竟然发现不是我一个人这样,甚至有比我更惨的,3W数据查询上20s的都出现过,实在是不明白为什么这么好的一个数据库,为什么在这块儿设计上有这么大的缺陷?
我也一度怀疑过是否服务器的磁盘和CPU不行了?
我也一度怀疑过是否pgsql的版本过低,是否高版本已经优化了这个问题?
继续查阅资料,后来找到了一种方案,使用pg_class表,速度是快了很多,毫秒级别响应,但是却带不上where条件,如下:
继续百度,发现有大佬提出一个方案,创建一张计数表,加上触发器,监测insert、delete操作,实时同步数量,不失为一个好方法,但是我又不想在这么一个问题上单独建一张表处理,最后虽然不想使用此方法,但却受到了启发,不想建表,那就用缓存呀~
临时解决方案:
1、利用pg_class查询,但是却无法带上where条件,全表扫描时可以考虑;
2、建立计数表,insert和delete之后,实时更新数量;
3、定时查询符合条件的数量,存入缓存;
此问题,可以说是依旧没有解决,我选择的第三种方案,只不过是避开了实时查询慢的问题,在定时器中查询的时候,依旧很慢,不过这个慢只有代码知道,对于用户是无感的!
看完文章,有任何疑问,请加入群聊一起交流!!!
很赞哦! ()
相关文章
- timestamp without time zone >= character varying
- IntelliJ IDEA 2024.2发布之后强推新UI,如何恢复老的经典UI界面
- Uninstall hasn't detected folder of intelli] lDEA installation. Probablyuninstall.exe was moved from the installation folder.
- 公众号CPS变现新宠:微赚淘客查券返利机器人,开启智能省钱赚钱新时代
- 高返利优惠券公众号推荐
- 返利公众号可信吗安全吗?返利机器人哪个佣金高?
- 唯品会购物返利公众号大揭秘:哪些真正好用的返利公众号?
- 饿了么优惠券免费领取:哪些公众号值得推荐?
- 哪些有用可靠的微信公众号能领淘宝优惠券?
- 微信返利最高的微信号推荐——让你的购物更加实惠!
标签云
猜你喜欢
- IntelliJ IDEA 2019.2已经可以利用补丁永久破解激活了
- IntelliJ IDEA 2019.3利用补丁永久破解激活教程
- IntelliJ IDEA高版本最灵活的永久破解激活方法(含插件激活,时长你说了算)
- Jetbrains全家桶基于ja-netfilter的最新破解激活详细图文教程
- IntelliJ IDEA 2022.1永久破解激活教程(亲测可用,持续更新)
- 分享几个正版 IntelliJ IDEA 激活码(破解码、注册码),亲测可用,持续更新
- ja-netfilter到底需不需要mymap,2021.3.2版本激活失效?
- 如何激活idea2022.1及以上版本中的插件(亲测可用)
- 【史上最全】IntelliJ IDEA最新2022.1版本安装和激活视频教学(含插件)
- IntelliJ IDEA 2022.2 版本最新2099年永久激活方法,亲测可用,也可以开启新UI了。
站点信息
- 网站程序:spring + freemarker
- 主题模板:《今夕何夕》
- 文章统计:篇文章
- 标签管理:标签云
- 微信公众号:扫描二维码,关注我们