进程模型、线程模型,PostgreSQL 正面临抉择
面向进程模型是一种数据库系统的架构模型,核心思想是将不同的数据库服务分配给不同的进程,每个进程独立运行,相互之间通过进程间通信(IPC)进行协作。这种模型被广泛应用于数据库系统中,例如 PostgreSQL 数据库系统。
正如上文所说,进程模型使得 PostgreSQL 可以将不同的服务分配给多个进程独立运行,每个进程负责不同的任务,例如查询处理、并发控制、锁管理等。进程模型还可以可以保证系统的稳定性和可靠性。当一个进程出现问题时,不会影响到其他进程的正常运行,从而提高了系统的可用性。
这样的特点使得 PostgreSQL 可以同时处理大量的并发请求,提高了系统的性能和响应速度;除此之外,PostgreSQL 还可以很容易地进行水平扩展,增加更多的节点以应对更高的负载。不过与此同时,也让 PostgreSQL 面对着管理和维护成本相对较高、需要较为复杂的进程间通信和协调机制、需要消耗更多的系统资源等缺点。
6 月初,Heikki Linnakangas 发布了将 PostgreSQL 转为线程模型的提案。
线程模型是一种数据库系统的架构模型,与面向进程模型类似,它是将不同的数据库服务分配给不同的线程,每个线程独立运行,相互之间通过线程间通信进行协作。线程模型在一些轻量级的数据库系统中得到广泛应用,例如 SQLite。
线程模型与进程模型的最大区别在于,线程模型中所有的线程共享同一个进程的地址空间,每个线程有自己的堆栈,共享代码段和数据段。这意味着线程之间可以直接访问同一份内存,因此线程间通信的成本相对较低,不过这也意味着线程间的数据共享可能会带来安全性问题。
从进程模型转换成线程模型的优缺点:
优点
- 更轻量级:线程模型相对于进程模型更加轻量级,可以更加高效地使用系统资源,尤其是在单机上运行多个实例时,线程模型可以将多个实例运行在同一个进程中,减少了系统调用和进程间通信带来的开销。
- 更高的响应速度:线程模型中线程之间的通信成本相对较低,因此在高并发场景下具有更高的响应速度。
- 更少的内存占用:线程模型中线程共享同一份地址空间,因此可以避免进程模型中同一份代码和数据被多个进程重复加载到内存的问题,节省了系统内存占用。
缺点
- 安全性问题:线程之间共享同一份内存,可能会带来安全性问题,例如数据竞争和锁竞争等。
- 可靠性问题:线程模型中一个线程崩溃可能会影响到整个进程的稳定性和可靠性。
- 多线程编程难度较大:线程之间的通信需要进行同步和互斥,编写多线程程序的难度相对较大。
PostgreSQL 开发者、EnterpriseDB 高级数据库架构师 Andres Freund 指出:
我认为原有流程模型开始产生诸多限制,这个问题在大型设备上体现得尤其明显。跨进程上下文切换所带来的开销,原本就比在同一进程内的不同线程间切换要更高——我估计这种开销还将持续提升。面对大量连接,整个体系最终一定会因 TLB 未命中而浪费大量时间。这是进程模型无法跨进程共享 TLB 的天然属性造成的必然结果。
目前这还仅仅只是一项提议,并且由于 PostgreSQL 被广泛用于生产环境,转换到线程模型的过程需要非常谨慎。开发团队需要在不影响现有生产环境的情况下测试新的线程模型,以确保其稳定性和可靠性。即便这个提议通过,这个转化过程肯定也是无法通过单一版本彻底完成,从网上的各方评价来看,目前大多数人都支持这项提议。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Visual Studio 支持直接创建 PR
微软官方宣布,Visual Studio 已支持直接创建 PR。 Visual Studio 工程团队通过博客宣布了这项“新”功能:在 Visual Studio 中创建 PR (Pull Request)。其实较旧版本的 Visual Studio 原本就支持创建 PR,但后面由于 Git UI 调整,微软砍掉了这项功能。现在终于加回来了。想试用的开发者,安装 VS 17.7 Preview 2 即可尝鲜。 团队表示,用户反馈称他们可以在 Visual Studio 中完成 90% 的开发工作流程,但需要依赖网页来创建 Pull Request。Visual Studio 作为致力于带来生产力增强功能的工具,在 17.7 Preview 2 发布后,开发者现在可以在不离开 Visual Studio 的情况下直接创建 Pull Request。 当然目前的使用体验较为粗糙,团队介绍了接下来的工作: 允许用户添加 reviewer 和指定的 reviewer description box 支持 Markdown 在 Visual Studio 中查看和跟踪 PR 详情查看公告。
- 下一篇
谷歌警告员工不要使用其对话式 AI 产品 Bard 生成的代码
据报道,谷歌警告其员工不要使用由其对话式 AI 产品 Bard 生成的代码。 这一政策并不令人惊讶,因为谷歌在更新的隐私声明中也建议用户不要在与 Bard 的对话中包含敏感信息。 其他大公司也类似地警告其员工不要泄露专有文件或代码,并禁止他们使用其他 AI 聊天机器人。然而,谷歌内部的警告引发了对私人公司构建的 AI 工具的可信度的担忧,特别是如果创造者自己不使用它们,那么这些工具可能存在隐私和安全风险。 谷歌告诉路透社,其内部禁令是因为 Bard 可能输出“不希望的代码建议”。问题可能导致程序出现错误或复杂、臃肿的软件,这将花费开发人员更多的时间来修复,而不是完全不使用 AI 来编码。 延伸阅读 Bard 已经可以写代码、解释代码作用和调试错误,支持 20 多种编程语言
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Linux系统CentOS6、CentOS7手动修改IP地址
- 2048小游戏-低调大师作品
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- MySQL8.0.19开启GTID主从同步CentOS8
- SpringBoot2更换Tomcat为Jetty,小型站点的福音