postgresql 有个巨大的坑 -- 两个凡是

宏哥 发布于 2016/06/14 11:25
阅读 821
收藏 1

默认的 work mem等配置实在太小了

跟不上时代啊。

有专业人士来说说,那几个内存相关的配置应该怎么修改?

加载中
1
bastetwang
bastetwang

https://www.postgresql.org/docs/current/static/runtime-config-resource.html#GUC-SHARED-BUFFERS

https://www.postgresql.org/docs/current/static/kernel-resources.html

是说的这些吧。

1
mark35
mark35

share mem可以设定为内存25%

work mem可以根据配置的最大连接数简单计算,

大致是 = 连接数*一条SQL中order/group by的数量*work_mem值

比如work_mem= 1MB, 当前并发是100,一条sql中排序用到一个字段,那么当前内存占用 100*1*1MB = 100MB,
如果这条SQL排序分组分别是两个字段那么就是 100*2*1MB=200MB

0
宏哥
宏哥

引用来自“bastetwang”的评论

https://www.postgresql.org/docs/current/static/runtime-config-resource.html#GUC-SHARED-BUFFERS

https://www.postgresql.org/docs/current/static/kernel-resources.html

是说的这些吧。

yes, well done!
0
tinshen
tinshen
IT行业的潜规则:开源软件用的时候都需要优化。
bastetwang
bastetwang
非开源软件一样需要。
0
宏哥
宏哥

引用来自“mark35”的评论

share mem可以设定为内存25%

work mem可以根据配置的最大连接数简单计算,

大致是 = 连接数*一条SQL中order/group by的数量*work_mem值

比如work_mem= 1MB, 当前并发是100,一条sql中排序用到一个字段,那么当前内存占用 100*1*1MB = 100MB,
如果这条SQL排序分组分别是两个字段那么就是 100*2*1MB=200MB

work_mem = 400MB
宏哥
宏哥
回复 @mark35 : 我这里确实有一些SQL很占用内存,我分别用不同参数再试试看
mark35
mark35
不需要这么大吧。如果一条SQL排序5个有索引字段那就会占用2G内存了
返回顶部
顶部