我对Amazon RDS(PostrgreSQL版本)并不了解。有些查询需要花费大量时间来显示结果。我已设置所有相关索引(如EXPLAIN所示)。所以我认为这不是因为我的架构设计。
我不使用大型机器(m3.xlarge),因为较大的机器太贵了。我的数据库大小约为300GB。
似乎Postgres没有使用所有可用内存(仅约5GB,控制台的“可用内存”报告显示总有~10GB可用内存......)。我尝试按照tune-your-postgres-rds-instance的建议调整我的“参数组”,特别是将EFFECTIVE_CACHE_SIZE设置为70%。但它没有改变任何东西。
我可能在某处错了......任何想法?
答案 0 :(得分:8)
要为查询提供更多可用内存,您可以调整work_mem。 这样做会产生影响,因为每个后端都有这种记忆。
effective_cache_size实际上根本不处理内存。它是一个优化器参数。
"可释放的记忆"是一件好事 - 这意味着当前在操作系统缓存中使用postgres(最有可能)使用内存。
你可以增加你的shared_buffers以允许postgres使用更多自己的记忆来进行缓存,但是它的有效性是有限的,这意味着你通常不想要使用超过25%的可用内存。