如果使用以下语句在用户级别设置 work_mem ,假设这会应用于该用户运行的每个查询?
alter user user1 set work_mem='64MB';
Run Code Online (Sandbox Code Playgroud)
这里的想法是为某些用户提供更多内存。
如果使用 更改参数ALTER ROLE,则该参数会在角色连接到数据库时设置。
如果您稍后更改用户上下文(例如使用SET ROLE或通过执行SECURITY DEFINER函数),则参数不会更改。
如果使用 设置参数ALTER FUNCTION ... SET,则该参数将在执行期间设置为该值。此类设置会暂时覆盖数据库会话启动时设置的值。
work_mem不限制用户所有会话的内存量,也不限制单个后端可以使用多少内存。它限制执行计划(排序、散列或位图)中单个步骤的可用内存量。如果单个查询执行计划包含多个占用内存的执行步骤,则该查询可以使用多次work_mem.
我配置内存的经验法则是:
\nwork_mem * max_connections + shared_buffers \xe2\x89\xa4 RAM
| 归档时间: |
|
| 查看次数: |
4301 次 |
| 最近记录: |