暂无图片
Sort Method: external 说明work_mem不够大吗?
我来答
分享
暂无图片 匿名用户
Sort Method: external 说明work_mem不够大吗?

执行计划中有下面的部分输出

Sort Method: external merge Disk: 17136kB


说明work_mem 不够大吗?

我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
Maleah

是的,可以适当调大work_mem的值。

执行计划中出现 Sort Method: external 字样,说明需要借助外部文件来进行排序,会有临时文件的生成

1)当执行sort排序、HASH JOIN、中间结果存储、聚合等会用到临时文件,超过了work_mem就会溢出到磁盘,在事务查询和结束后会自动回收

可以通过设置log_temp_files在日志中观察临时文件

2)Sort Method有两种

  • quicksort:快速排序,能够在内存中完成排序操作
  • external sort:外部合并排序,work_mem的值较小,需借助临时文件来完成排序操作

暂无图片 评论
暂无图片 有用 1
watson

是的,可适当调大work_mem的值。

暂无图片 评论
暂无图片 有用 0
阎书利

如果调整的话还是要看你实际的业务情况,不要因为一两个执行频率很低的SQL去随意改动内存相关参数,过大的work_mem和大量并发可能会导致OOM,你可以仔细评估下这个SQL的执行计划,和你业务情况,例如并发,常运行的SQL类型以及这些执行计划涉及的操作是否使用到了work_mem,并且work_mem大小不够导致借助临时文件去完成操作的SQL比例有多少,之后再去考虑是否调整work_mem。否则轻易改动,可能会影响业务的性能,降低用户体验。

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏