oro*_*aki 5 postgresql memory configuration
多年来我注意到的一种常见模式是,人们倾向于随着数据大小的增加而不断增加工作内存,因此更复杂的查询仍然可以充分利用内存速度,但对于某些极端任务(例如,报告)。
仅对一些很少运行的异常查询大幅增加该数字可能是有利的。例如,我可能想保持work_mem在例如。8 MB 用于正常操作,然后使用具有 250 MB 工作内存之类的特定客户端/用户运行特定查询,以便我可以在单个会话期间完全在内存中快速执行重大操作。
这可能吗?我是否完全不考虑将其视为解决方案?
你有几种可能性。
为work_mem用户更改很容易:
ALTER ROLE alice SET work_mem TO '5GB';
Run Code Online (Sandbox Code Playgroud)
如果您可以安排诸如alice用户运行那些繁重的查询之类的事情,这可能就足够了。如果这个数字很大(您服务器上的 RAM 的很大一部分),则可以随时限制用户只有少量连接(即使是 1 也可能有意义):
ALTER ROLE alice WITH CONNECTION LIMIT 2;
Run Code Online (Sandbox Code Playgroud)
如果这不可行,您可以将查询存储为函数。这样做的好处是您可以在定义函数时或之后设置所选参数:
ALTER FUNCTION heavy(integer) SET work_mem TO '2GB';
ALTER FUNCTION very_heavy(integer) SET work_mem TO '13GB';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1095 次 |
| 最近记录: |