我正在使用postgres服务器9.4。
从pg_admin或psql工具,我可以SHOW ALL;
这将给我postgres服务器的配置。例如shared_buffers is 8GB
或effective_cache_size is 24GB
最近,数据库变得越来越大,查询变得越来越慢。
我知道可能需要使用explain
重新评估查询。
除了查询优化之外,我如何知道使用状态?
例如,从8GB的shared_buffer
或24GB的effective_cache_size
中使用了多少或任何其他配置值 - 是时候增加这些配置值了吗?
答案 0 :(得分:1)
https://www.postgresql.org/docs/current/static/runtime-config-resource.html
shared_buffers = 8GB已经是巨大价值,您可以使用https://www.postgresql.org/docs/current/static/pgbuffercache.html将其检查到某个级别 如果您仍觉得不够,请记住您可能需要增加max_wal_size。同样在9.4或9.5之前(不确定,它定义发生在9.3)流式复制从站只使用一个核心来扫描shared_buffers未使用的已删除页面,因此具有大型shared_buffers的服务器非常滞后。反对增加的两个论点来自头顶。
更改effective_cache_size
是一个更令人惊讶的想法。通常它从头开始设置为最大值。因为它基本上告诉计划者他可以依靠多少RAM。因此,如果安装耗尽RAM的新软件,则可能需要减少它,如果向计算机添加更多RAM,则可能会增加。否则 - 为什么规划者应该期望更多的RAM可用于查询?..
以上是我对这两个配置的个人谦逊经历。回答你的问题我说试试pg_buffercache
检查shared_buffers
使用情况,并用set effective_cache_size to some_bigger_value
检查执行计划 - 如果你发现Postgres开始使用的索引没有使用较小的值和执行速度加快 - 这是集群增加它的时间。