gpt4 book ai didi

windows - 无法在 Windows Server 上使用 PostgreSQL 9.3 将 work_mem 增加到 1GB 以上

转载 作者:可可西里 更新时间:2023-11-01 11:49:23 27 4
gpt4 key购买 nike

我想调整 postgres 配置以在 Windows 服务器上使用。这是我当前的 posgresql.conf 文件:http://pastebin.com/KpSi2zSd

我想增加 work_memmaintenance_work_mem,但如果我将值提高到 1GB 以上,我会在启动服务时收到此错误:

enter image description here

没有任何内容添加到日志文件中(至少不在 data\pg_log 中)。我如何找出导致问题的原因(增加日志记录)?这与 Windows 和 Postgres 之间的问题管理有什么关系吗?

这是我的服务器规范:

  • Windows Server 2012 R2 数据中心(64 位)
  • 英特尔 CPU E5-2670 v2 @ 2.50 GHz
  • 512 GB 内存
  • PostgreSQL 9.3

最佳答案

在 Windows 下,work_mem 的值被限制为 2GB(即使在 64 位系统上)——据我所知没有解决方法。

我不知道为什么你不能将它设置为 1GB。也许 work_memmaintenance_work_mem 的总和还有另一个我不知道的限制。

work_mem 默认设置 通常不是一个好主意。在 512GB RAM 和只有 10 个用户的情况下,这可能可以工作,但请记住,work_mem 的数量是由单个语句中的每个排序、分组或哈希操作请求的询问。所以你可以有一个语句请求这个内存量 15 或 20 次。

您不需要在 postgresql.conf 中更改此设置 - 如果您知道以下查询将从大型 work_mem 中受益,则可以动态更改此设置,方法是运行:

set session work_mem='2097151';

如果您使用更大的数字,您将收到一条错误消息,告诉您限制:

ERROR: 2097152 is outside the valid range for parameter "work_mem" (64 .. 2097151)


即使 Postgres 没有使用所有内存,它仍然可以从中受益。 Postgres(与 Oracle 不同)严重依赖文件系统缓存,而不是自己进行所有缓存。 shared_buffers 的值超过大约 8GB 很少显示出任何好处。

需要告诉 Postgres 操作系统通常使用多少内存进行缓存,方法是将 effective_cache_size 设置为适当的值。 Postgres 不会使用缓存,但它会影响计划者的选择,例如如果索引可能位于文件系统缓存中,则优先使用索引扫描而不是序列扫描。

您可以在 Windows 任务管理器(或例如 ProcessExplorer)中查看文件系统缓存的当前大小

关于windows - 无法在 Windows Server 上使用 PostgreSQL 9.3 将 work_mem 增加到 1GB 以上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33995367/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com