PostgreSQL 对大数据量排序时较慢的处理方法
2019/10/25
使用 PostgreSQL 对大数据量排序的时候非常慢,使用 explain 会看到,最耗时的部分是在 sort 的时候,里面用到 external merge disk,这说明,内存已经不够排序了,用到了磁盘空间,这时效率是很低的。这种情况下可以考虑调高 work_mem,使用内存排序,性能会得到一些提升,设置方法如下
-- 查看当前 work_mem 数值
SHOW work_mem;
-- 设置 work_mem
SET work_mem = '800MB';
-- execute query 执行查询
-- 将 work_mem 重置
RESET work_mem;
上面的方法中 SET work_mem = '800MB'
只针对当前 session 有效,查询结束后将 work_mem 重置。因为调高了 work_mem,当出现大并发时,可能会导致 PG OOM,需要谨慎操作。
https://www.cybertec-postgresql.com/en/postgresql-improving-sort-performance/