探秘数据库中的并行计算技术应用

💡 原文中文,约3600字,阅读约需9分钟。
📝

内容提要

本文介绍了数据库中的并行计算技术应用,包括分布式并行处理架构、MPP和SMP并行。MySQL和PostgreSQL应用了Shared Nothing和SMP技术。GaussDB进一步提升了分布式处理性能。

🔎

延伸解读

Shared Nothing 架构的历史地位与影响

文章指出,Shared Nothing 架构因在成本、扩展性和可用性方面的优势,自 1985 年 Michael Stonebraker 的论文发表后成为主流设计思路。最早的商业产品是 1984 年 Teradata 的 DBC/1012,它通过增加 AMP 数量来提升容量和性能,帮助 Teradata 赢得大客户。这反映了 Shared Nothing 在并行数据库发展中的奠基作用,其设计思想至今仍影响 MPP 数据库。

MPP 与 SMP/NUMA 的架构差异

文章对比了 MPP、SMP 和 NUMA:MPP 由多台服务器节点通过互联网络连接,各节点只访问本地资源,节点间 Shared Nothing;SMP 所有资源(内存、I/O)共享,扩展能力有限;NUMA 是单台物理服务器内多个 CPU 模块通过互联模块连接,访问本地内存速度远高于其他节点。NUMA 和 MPP 的关键区别在于 NUMA 是一台物理服务器,而 MPP 是多台。

开源数据库的并行技术实现路径

MySQL 和 PostgreSQL 在 Shared Nothing 和 SMP 并行上采取了不同路径。Shared Nothing 方面,两者主要依赖中间件(如 GoldenDB、TDSQL、Postgres-XL、citus 等)构建分布式集群,但文章指出这类架构存在功能降级、全局事务和高可用等短板。SMP 方面,MySQL 8.0.14 引入并行查询,由 InnoDB 提供并行扫描和 DDL 线程控制;PostgreSQL 从 9.6 开始支持并行顺序扫描和聚合,11 版本增加更多并行算子。

并行技术的演进与 GaussDB 的定位

文章提到,随着单台服务器硬件资源增强(几十至上百核),仅靠 Shared Nothing 横向扩展无法充分挖掘硬件潜力,因此业界发展 SMP 并行以提升单机纵向扩展能力。此外,SIMD 指令集可进一步压榨芯片性能,但文章未展开。GaussDB 结合了 Shared Nothing 和 SMP 技术,并针对实际场景添加特色实现,以进一步提升分布式处理性能,具体细节将在下一篇文章说明。

❓

Q&A

什么是并行计算技术,它在数据库中有什么应用?

并行计算技术是通过多台服务器和多核处理器实现任务并行化处理,从而提高系统性能。在数据库中,它用于分布式并行处理架构、MPP和SMP并行等。

Shared Nothing架构的优势是什么?

Shared Nothing架构在成本、扩展性和可用性方面具有优势,因此成为主流设计思路。

MySQL和PostgreSQL如何实现并行处理?

MySQL通过中间件和NDB Cluster实现Shared Nothing,PostgreSQL则使用开源中间件如Postgres-XL和Postgres-XC,并在9.6版本后支持并行处理。

MPP和SMP架构有什么区别?

MPP是多台服务器节点通过互联网络连接,各服务器之间共享本地资源,而SMP是单台服务器中所有资源共享,扩展能力有限。

GaussDB在并行处理方面有什么特色?

GaussDB结合实际场景,进一步提升了分布式处理性能,采用了Shared Nothing和SMP技术。

SMP并行技术如何提升数据库性能?

SMP并行技术通过多线程多子任务并行执行,充分高效地利用系统计算资源,从而提升数据库性能。

🏷️

标签

➡️

继续阅读