gpt4 book ai didi

PostgreSQL 性能 : keep seldomly used small database in memory while server busy with big database

转载 作者:行者123 更新时间:2023-11-29 12:21:56 25 4
gpt4 key购买 nike

我有一台配备 64GB RAM 和 PostgreSQL 9.2 的服务器。它是一个只有 4GB 的小型数据库“A”,大约每小时只查询一次,还有一个大约 60GB 的大型数据库“B”,每秒查询 40-50 次!

正如预期的那样,Linux 和 PostgreSQL 会用更大的数据库数据填充 RAM,因为它被更频繁地访问。

我现在的问题是对小型数据库“A”的查询很关键,必须在 <500 毫秒内运行。日志文件显示每天有几个查询耗时 >3 秒。如果我手动执行它们,它们也只需要 10 毫秒,所以我的索引没问题。

所以我猜那些长跑者发生在 PostgreSQL 必须从磁盘加载小数据库索引 block 的时候。

我已经有了某种“缓存暖机”脚本,它每秒向小型数据库重复“SELECT * FROM x ORDER BY y”查询,但它浪费了大量的 CPU 能力,并且只稍微改善了这种情况。

关于如何告诉 PostgreSQL 我真的希望那个小数据库“粘”在内存中还有更多想法吗?

最佳答案

PostgreSQL 不提供将表固定在内存中的方法,尽管社区肯定会欢迎那些愿意致力于深思熟虑、经过测试和基准测试的提案,以允许那些愿意真正支持这些提案的人代码。

此时您对 PostgreSQL 的最佳选择是为响应时间关键型数据库运行一个单独的 PostgreSQL 实例。给这个 DB 一个足够大的 shared_buffers,整个 DB 将驻留在 shared_buffers 中。

不要在 ramdisk 或其他非持久存储上创建表空间,并将需要不经常但快速访问的数据放在那里。所有表空间必须是可访问的,否则整个系统将停止;如果您丢失了一个表空间,您实际上就丢失了整个数据库集群。

关于PostgreSQL 性能 : keep seldomly used small database in memory while server busy with big database,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17704871/

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