进程模型、线程模型,PostgreSQL 正面临抉择


面向进程模型是一种数据库系统的架构模型,核心思想是将不同的数据库服务分配给不同的进程,每个进程独立运行,相互之间通过进程间通信(IPC)进行协作。这种模型被广泛应用于数据库系统中,例如 PostgreSQL 数据库系统。

正如上文所说,进程模型使得 PostgreSQL 可以将不同的服务分配给多个进程独立运行,每个进程负责不同的任务,例如查询处理、并发控制、锁管理等。进程模型还可以可以保证系统的稳定性和可靠性。当一个进程出现问题时,不会影响到其他进程的正常运行,从而提高了系统的可用性。

这样的特点使得 PostgreSQL 可以同时处理大量的并发请求,提高了系统的性能和响应速度;除此之外,PostgreSQL 还可以很容易地进行水平扩展,增加更多的节点以应对更高的负载。不过与此同时,也让 PostgreSQL 面对着管理和维护成本相对较高、需要较为复杂的进程间通信和协调机制、需要消耗更多的系统资源等缺点。

6 月初,Heikki Linnakangas 发布了将 PostgreSQL 转为线程模型的提案。

线程模型是一种数据库系统的架构模型,与面向进程模型类似,它是将不同的数据库服务分配给不同的线程,每个线程独立运行,相互之间通过线程间通信进行协作。线程模型在一些轻量级的数据库系统中得到广泛应用,例如 SQLite。

线程模型与进程模型的最大区别在于,线程模型中所有的线程共享同一个进程的地址空间,每个线程有自己的堆栈,共享代码段和数据段。这意味着线程之间可以直接访问同一份内存,因此线程间通信的成本相对较低,不过这也意味着线程间的数据共享可能会带来安全性问题。

从进程模型转换成线程模型的优缺点:

优点

  • 更轻量级:线程模型相对于进程模型更加轻量级,可以更加高效地使用系统资源,尤其是在单机上运行多个实例时,线程模型可以将多个实例运行在同一个进程中,减少了系统调用和进程间通信带来的开销。
  • 更高的响应速度:线程模型中线程之间的通信成本相对较低,因此在高并发场景下具有更高的响应速度。
  • 更少的内存占用:线程模型中线程共享同一份地址空间,因此可以避免进程模型中同一份代码和数据被多个进程重复加载到内存的问题,节省了系统内存占用。

缺点

  • 安全性问题:线程之间共享同一份内存,可能会带来安全性问题,例如数据竞争和锁竞争等。
  • 可靠性问题:线程模型中一个线程崩溃可能会影响到整个进程的稳定性和可靠性。
  • 多线程编程难度较大:线程之间的通信需要进行同步和互斥,编写多线程程序的难度相对较大。

PostgreSQL 开发者、EnterpriseDB 高级数据库架构师 Andres Freund 指出:

我认为原有流程模型开始产生诸多限制,这个问题在大型设备上体现得尤其明显。跨进程上下文切换所带来的开销,原本就比在同一进程内的不同线程间切换要更高——我估计这种开销还将持续提升。面对大量连接,整个体系最终一定会因 TLB 未命中而浪费大量时间。这是进程模型无法跨进程共享 TLB 的天然属性造成的必然结果。

目前这还仅仅只是一项提议,并且由于 PostgreSQL 被广泛用于生产环境,转换到线程模型的过程需要非常谨慎。开发团队需要在不影响现有生产环境的情况下测试新的线程模型,以确保其稳定性和可靠性。即便这个提议通过,这个转化过程肯定也是无法通过单一版本彻底完成,从网上的各方评价来看,目前大多数人都支持这项提议。


相關推薦

2023-06-14

和最佳实践,旨在促进各方广泛合作与深度交流,推动大模型与科学智能的创新,加速AI技术创新和应用落地。 作为全球领先的人工智能框架,昇思MindSpore将在峰会中发挥重要作用,引领人工智能框架的创新与发展。昇思首创

2023-07-05

g/hudi JDBC Catalog 新增支持 Oceanbase,目前支持包括 MySQL、PostgreSQL、Oracle、SQLServer、Doris、Clickhouse、SAP HANA、Trino/Presto、Oceanbase 等近十种关系型数据库。参考文档:https://doris.apache.org/zh-CN/docs/dev/lakehouse/multi-catalog/jdbc 数据权

2022-10-22

是 Meta AI 的通用语音翻译器项目的一部分,这个机器语言模型的最终目标是允许实时翻译众多不同的口语和书面语言,使任何人都能轻松沟通。 建构新模型的挑战在于,大多数实时翻译技术主要使用书面语言作为语音编码的数

2023-06-22

家消息,蚂蚁集团技术研发团队正在自研语言和多模态大模型——内部命名为“贞仪”,该项目获得了蚂蚁集团管理层高度重视,已启动数月。 多模态大模型指的是将文本、图像、视频、音频等多模态信息联合起来进行训练的

2023-09-03

上轮融资后,硅心科技一方面加快了代码大模型的研发进程;另一方面开始推进模型落地应用,面向金融、互联网等重点行业的头部客户提供模型个性化训练和私有化部署服务。 2022年,硅心科技发布了国内首个基于深度学习

2023-04-20

执行期间限制对特定资源的访问,例如文件系统操作、子进程生成和 worker 线程创建。 通过使用此功能,开发者可以防止他们的应用程序访问或修改敏感数据,或者运行可能有害的代码。 详情查看文档:https://nodejs.org/api/permiss

2022-09-20

编程对于 Rust 目标的许多领域都很重要,且与 Rust 的编程模型配合得很好。然而,其生态系统在不同的运行时有些分裂;虽然有在进行相关的改进工作,但却进展缓慢,最终成功与否也未能确定。“风险在于我们最终会将东西带

2023-09-22

飞等四十多家企业共同编制的《面向行业的大规模预训练模型技术和应用评估方法第1部分:金融大模型》发布成为国内首个金融行业大模型标准,为金融行业智能化的高质量发展提供了重要支撑,为全面促进大模型安全合规和

2022-10-20

学都知道 fork(2) 系统调用有几个优势: 新进程可以继承母进程的当前状态,而无需从 main() 开始初始化; pcb、栈、内存页,页表都是纯内存复制,所以进程创建快 (<1ms); CopyOnWrite,新进程

2023-05-06

Hugging Face 日前联合 ServiceNow 发布了一个免费的大型语言模型 StarCoder(150 亿参数),该模型经过训练主要用途是可以生成代码,目的是为了对抗 GitHub Copilot 和亚马逊 CodeWhisperer 等基于 AI 的编程工具。 目前像是 GitHub Copilot 这

2023-06-15

练的关系,将图采样、特征查找与训练进行解耦,使用多进程并行和协程异步并发来加速采样和特征查找,并使用预取和热点缓存的方式进一步减少训练端的等待,提升端到端吞吐。考虑到用户迁移成本和易用性,在接口上我们

2022-02-22

PostgreSQL 现已通过其 TOAST 存储技术提供压缩支持,并且在过去的一年里构建了 LZ4 压缩支持——用于压缩 WAL、备份压缩以及其他用途,现在 PostgreSQL 开发者正准备通过 Zstd 支持进一步扩展其压缩能力。 Zstd (Zstandard) 是由 Faceboo

2023-09-05

诗级更新,添加了新的 HNSW 索引支持。也对新发布的 PostgreSQL 16 RC1 提供了支持。此外,官方文档现在提供中文版本,现有文档也进行了丰富与完善。最后,还有例行的软件版本更新与问题修复。 HNSW 版 PGVECTOR? PGVECTOR 是一

2023-10-26

果你正在处理大量数据,Polars 会让你的工作速度更快。 PostgreSQL PostgreSQL 已经有 35 年的历史,有 700 多位贡献者参与其中,在关系数据库管理系统中估计占有 16.4% 的市场份额。最近的一项调查显示,在 9 万名开发人员中,45%