gpt4 book ai didi

postgresql - 后台工作进程可以直接使用 PostgreSQL 中的共享内存访问数据吗?

转载 作者:行者123 更新时间:2023-11-29 14:13:09 27 4
gpt4 key购买 nike

当前documentation似乎(对我来说)暗示你需要使用数据库连接来读取/写入 PostgreSQL 中的数据,就像“普通客户端”一样,但网络上的一些文章似乎暗示你可以实现某种形式的“复制”在后台工作进程中使用共享内存,使用最新版本的 PostgreSQL。我可能理解错了。

那么,后台工作进程可以直接使用 PostgreSQL 中的共享内存访问(读/写)数据吗?

该问题的目的是了解使用这种可能复杂且危险的访问方法是否可以实现(可衡量的)性能优势。在理想情况下,我希望将 PostgreSQL 用作单进程“嵌入式”数据库,但 PG 无法做到这一点。似乎“后台工作进程”+“共享内存”是我能得到的最接近的。

如果我想要一个嵌入式数据库,不使用 SQLite 的原因是缺乏对数组和复合类型的支持,就像在 PG 中一样。 Firebird 是替代方案,但也缺少复合类型。

最佳答案

我认为你走错了路。

后台 worker 可以访问共享缓冲区和其他共享内存结构以及数据库文件,但直接这样做并破坏服务器内部的抽象规则将导致困惑和破坏,而不是提高性能。

如果您想在后台工作进程或任何其他服务器进程中运行 SQL 语句,您可以使用 BackgroundWorkerInitializeConnection 请求连接。这不是普通的客户端连接,它允许您通过 SPI interface 执行 SQL 语句.

我看不出所有这些如何让您更接近于将 PostgreSQL 用作嵌入式数据库。与来自另一个进程的后台 worker 通信并不比通过 UNIX 套接字建立正常的客户端-服务器连接更好(并且可能更复杂)。如果常规 session 后端进程已经可以为您做同样的事情,为什么还要编写自己的后台进程?

如果您需要嵌入式数据库,请使用 SQLite 之类的东西。

关于postgresql - 后台工作进程可以直接使用 PostgreSQL 中的共享内存访问数据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58645650/

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