
数据库服务器配置 20 核 32G,单机。100 并发持续时间 180 秒对某个简单分页查询接口进行压测。
期间应用服务器正常,数据库连接正常,但数据库服务器 CPU 占满,请问这是正常现象还是啥问题....
单表分页的首页查询,表内 1000 万数据,筛出的数据为 28w,大概 sql 如下:
SELECT a,b,c,d,e FROM table WHERE del_flag = 0 AND c LIKE 'c%' order by e desc limit 10 SELECT COUNT(*) FROM table WHERE del_flag = 0 AND c LIKE 'c%'



1 zoharSoul 2021 年 8 月 25 日 大表不要 count |
5 laozhoubuluo 2021 年 8 月 25 日 EXPLAIN 看下索引是否设置正确。 另外如果业务经常使用 COUNT(*) ,建议把相关值放入内存缓存或者缓存表。 |
6 laozhoubuluo 2021 年 8 月 25 日 @laozhoubuluo 带 LIKE 的话效率不太好优化了就。除非上一些比较复杂的优化,例如搜索数据全量进缓存后续读取靠缓存,以及单独的检索服务器之类的。 |
7 Uyuhz OP @laozhoubuluo 查询条件多变的情况如何处理呢,这个值很难保证准确吧。。。 |
8 laozhoubuluo 2021 年 8 月 25 日 @Uyuhz 加 gin 索引 & pg_trgm 模块是个可以尝试的办法。不过得分析下主要的查询方向交给 DBA 看看怎么加比较优化。 |
9 Uyuhz OP @laozhoubuluo EXPLAIN 看 like 'c%' 是走了索引的,另外关键是没有 DBA....不然这活轮得到我吗.... |
10 ColinZeb 2021 年 8 月 25 日 select a,b,c from t where id in (select id from t limit) |
11 aragakiyuii 2021 年 8 月 25 日 via iPhone VACUUM 之后再试试? |
12 aragakiyuii 2021 年 8 月 25 日 via iPhone vacuum analyze tablename |
13 Uyuhz OP @aragakiyuii 尝试了下 吞吐量到了 108,估计是误差,cpu 未见效果 |
14 netnr 2021 年 8 月 25 日 via Android 新版本 索引 有优化 借一部说话 pgsql 不(傻瓜)支持忽略大小写查询,业务开展有困扰吗,其它几个关系型数据库都支持 oracle mssql mysql 起步 300M,而 pgsql 只需要 30M,而且性能测评还占上风,对于个站小部署优势巨大,就卡在大小写查询的问题(用 EFCore) |
16 liuxu 2021 年 8 月 25 日 mysql 没命中索引的时候 cpu 消耗相当高 |
18 littlewing 2021 年 8 月 25 日 上 es |
19 dorothyREN 2021 年 8 月 25 日 @netnr #14 这个难道不是你的问题吗? |
20 aragakiyuii 2021 年 8 月 25 日 via iPhone @Uyuhz del_flag 和 c 都有索引嘛? |
21 Uyuhz OP @aragakiyuii 前者无,后者有 |
22 aragakiyuii 2021 年 8 月 26 日 |
23 Uyuhz OP @aragakiyuii 感谢,我先研究下 |
24 bthulu 2021 年 8 月 26 日 可以指定慢 sql 使用某个 cpu 核心, 让这个核心慢慢跑就是了. 比如 8C16G, 打满一个核心, cpu 占用率也就 12.5% |
25 encro 2022 年 3 月 5 日 你都 like 了,还要什么性能。 |