如何将我的整个PostgreSql数据库放入RAM中,以便更快地访问??我有8GB的内存,我想为数据库贡献2GB.我读过有关共享缓冲区设置的内容,但它只是缓存数据库中访问次数最多的片段.我需要一个解决方案,将整个数据库放入RAM,任何读操作都会从RAM数据库中进行,任何写操作都会先写入RAM数据库,然后再写入硬盘上的数据库.(在postgresql配置设置中使用共享缓冲区的默认fsync=on).

推荐答案

我问自己同样的问题已经有一段时间了.PostgreSQL的缺点之一是它似乎不像MySQL那样支持内存中的存储引擎...

不管怎样,几周前,我跑go 拜访了一位article人,描述了如何做到这一点;尽管它似乎只适用于Linux.我自己也try 过把它作为一个SQL存储库,但我觉得它并没有意义.

然而,即使使用这种方法,我也不确定您是否可以将索引也放入RAM中;我不认为MySQL强迫哈希索引在内存表中免费使用...

我还想做类似的事情来提高性能,因为我也在处理巨大的数据集.我在使用python;它们有字典数据类型,基本上是{key:value}对形式的哈希表.使用这些工具非常有效.基本上,为了将我的PostgreSQL表放入RAM,我将其加载到这样的python字典中,使用它,并偶尔将其持久化到db中;如果使用得当,它是值得的.

如果您没有使用python,我很确定他们的字典映射了您的语言中的数据 struct .

希望这有帮助!

Postgresql相关问答推荐

列索引8上的扫描错误,名称已复制:不支持扫描,正在存储驱动程序.值类型[]uint8到类型*[]*bool

为什么Postgres优化器切换到嵌套循环进行连接?

Psql:Windows 10上奇怪的错误输出编码

在postgres中撤销Select后,RLS停止工作

至少 pgRouting 的某些部分可以与并行查询并行运行吗?

为什么 postgresql 可以在这个查询中高效地使用索引?

如何包装 record_out() 函数?

是否可以使用 pgAdmin4 自动格式化/美化 SQL 查询?

PostgreSQL 中的 DATEADD 等效项

获取带有时区偏移的日期

在 Postgresql 中获取星期几

Postgres 中的相似函数与 pg_trgm

Docker - Postgres 和 pgAdmin 4:Connection refused

SQL - 提示引用列

如何创建 postgres 数据库模式的 sql 脚本?

在 Postgres 中显示关系、序列和函数的默认访问权限

错误:关系列不存在 PostgreSQL,无法运行插入查询

使用 Postgres 在 Rust 的 Diesel 库中添加时间戳

由于不支持身份验证类型 10,无法连接到 Postgres DB

如何在创建数据库时安装 Postgres 扩展?