Amazon RDS (PostgreSQL):优化内存使用
Amazon RDS (PostgreSQL): Optimize memory usage
对于 Amazon RDS(PostrgreSQL 版本),有些东西我不太了解。有些查询需要很长时间才能显示结果。我已经设置了所有相关索引(如 EXPLAIN 所示)。所以我认为这不是由于我的模式设计。
我不使用大机器 (m3.xlarge),因为大机器太贵了。我的数据库大小约为 300GB。
似乎 Postgres 没有使用所有可用内存(只有 ~5GB,控制台的 "Freeable memory" 报告显示总是有 ~10GB 可用内存...)。我尝试按照 tune-your-postgres-rds-instance 的建议调整我的 "parameter group",尤其是将 EFFECTIVE_CACHE_SIZE 设置为 70%。但它并没有改变任何东西。
我可能哪里错了...有什么想法吗?
要为您的查询提供更多内存,您需要调整 work_mem。
这样做是有影响的,因为这是每个后端的内存。
effective_cache_size 实际上根本不处理内存。这是一个优化器参数。
"Freeable memory" 是一件好事——这意味着操作系统缓存中的内存当前(很可能)被 postgres 使用。
您可以增加 shared_buffers 以允许 postgres 使用更多它自己的内存进行缓存,但它的有效性有限制,这意味着您通常不想使用超过 25% 的可用内存记忆到此。
对于 Amazon RDS(PostrgreSQL 版本),有些东西我不太了解。有些查询需要很长时间才能显示结果。我已经设置了所有相关索引(如 EXPLAIN 所示)。所以我认为这不是由于我的模式设计。
我不使用大机器 (m3.xlarge),因为大机器太贵了。我的数据库大小约为 300GB。
似乎 Postgres 没有使用所有可用内存(只有 ~5GB,控制台的 "Freeable memory" 报告显示总是有 ~10GB 可用内存...)。我尝试按照 tune-your-postgres-rds-instance 的建议调整我的 "parameter group",尤其是将 EFFECTIVE_CACHE_SIZE 设置为 70%。但它并没有改变任何东西。
我可能哪里错了...有什么想法吗?
要为您的查询提供更多内存,您需要调整 work_mem。 这样做是有影响的,因为这是每个后端的内存。
effective_cache_size 实际上根本不处理内存。这是一个优化器参数。
"Freeable memory" 是一件好事——这意味着操作系统缓存中的内存当前(很可能)被 postgres 使用。
您可以增加 shared_buffers 以允许 postgres 使用更多它自己的内存进行缓存,但它的有效性有限制,这意味着您通常不想使用超过 25% 的可用内存记忆到此。