暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

数据库对比

南京柯普瑞信息技术有限公司 2022-05-30
688

起因

一直在思索MySQL成功的原因,所以向一些业界的朋友请教探讨,得出一点极为简单的东西如下:


总结:

MySQL的成功是随同互联网成长、LAMP成长、MySQL的DBA成长而成长的(功能逐步完善),它突出的特点是:因简单而易用/免费/开源/因插件框架而易扩展/复制功能领先/性能好。

  • 因简单而易用: 解决了新人快速上手的需求(入门问题)

  • 免费: 解决了平民也要使用数据库的需求(资金问题)

  • 开源: 解决了深度探索的需求(闭源恐惧问题)

  • 因插件框架而易扩展: 解决了未来发展的需求(发展问题)

  • 复制功能领先: 解决了DBA以简单方式保证数据可靠的需求(维护问题)

  • 性能好:够用而不掉链(可用问题)

再总结:平民化


这些内容简单还不足以说明问题,许多朋友也关心数据库选型的问题,所以作个深度的剖析,通过对PostgreSQL/MySQL/Oracle分析,以此达到:

  • 客观性:只做比较不做评述,保持客观公正的立场。

  • 全面性:从历史/技术/服务/运维/应用/市场/未来等角度做比较,其中技术是重点。

  • 多角度:面对目前的版本,从技术实现/使用方式等角度去比较,前者是从代码的角度看问题,后者是从用户的角度看问题,使得本文力求更为“客观+全面”。


约定

数据库版本约定

  • MySQL V5.6.x及以上,如果有特殊需要,可单独标明版本。

  • PostgreSQL V9.2.x及以上,如果有特殊需要,可单独标明版本。

  • Oracle V12c及以上,如果有特殊需要,可单独标明版本。


概述

产品形态与组件组成

架构图

1 MySQL的架构图

2 PostgreSQL的架构图

3 Oracle的架构图

基本架构

1、 多进程/多线程架构

MySQL是多线程结构。PostgreSQL是多进程结构。Oracle和平台有关,可认为是多进程/多线程共用的结构。

  • 在UNIX平台上,Oracle/PostgreSQL使用多进程模式;MySQL使用单进程多线程模式。

  • 在Windows平台上,Oracle/MySQL使用多线程模式, PostgreSQL用多进程模式。

  • Oracle采用独立的监听进程监听用户的连接请求

  • PostgreSQL采用主进程作为监听用户连接请求

  • MySQL采用主线程作为监听用户连接请求


在后台进程或线程方面:

  • Oracle后台进程包括:数据库写进程Database Writer (DBW0 or DBWn)、日志写进程Log Writer (LGWR)、检查点进程Checkpoint (CKPT)、系统监视器进程System Monitor (SMON)、进程监视器进程Process Monitor (PMON)、归档进程Archiver (ARCn)、恢复进程Recoverer (RECO)、锁管理器进程Lock (LCK0)、队列管理器进程Job Queue (SNPn)、队列监视器进程Queue Monitor (QMNn)、调度器进程Dispatcher (Dnnn)、服务器进程Server (Snnn)。

  • PostgreSQL后台线程包含:主服务进程、系统恢复进程、系统写进程、写日志进程、数据库统计进程、空间清理进程、归档进程、输出信息写进程、流复制进程。

  • MySQL(以InnoDB为默认的存储引擎)后台线程包含: 主线程、 脏页刷出线程、事务回滚线程、IO线程(参数确定,可能有多个)锁超时监控线程(解决死锁)、错误监控线程、InnoDB监控线程(打印输出InnoDB监控信息)、缓存刷出的线程(参数确定,可能有多个)、执行purage协调操作的线程、执行purge执行操作的线程(参数确定,可能有多个)、缓存池加载与导出线程、词典统计收集信息线程、全文检索服务线程、 全文检索并行排序线程(参数确定,可能有多个)、性能监控线程(PFS)、复制相关线程等。


 三者的主要差异:

  • PostgreSQL比Oracle多出:数据库统计进程、空间清理进程、输出信息写进程、流复制线进。比Oracle缺少:系统监视器进程、锁管理进程、队列管理器进程、队列监视器进程、调度器进程。

  • PostgreSQL对每一个客户连接,产生一个相应服务线程。和客户端是一对一关系。

  • Oracle根据连接方式的不同,产生专用服务器进程或共享服务器进程。其中,专用服务器进程和客户端是一对一关系,共享服务器进程可以是一对多关系。此外,在共享服务器进程存在前提下,还将有一个数据库调度器进程负责任务分派。


内存管理方式

  • PostgreSQL,启动过程中,通过参数shared_buffers从操作系统分配一块内存,作为数据页面缓存,这是Pg对内存的自管理方式。之后,数据库运行期间,所需的内存(如数据页的缓存/日至页的缓存/排序和连接运算使用的缓存/锁使用的内存/临时使用的内存),从进程的全局堆中分配。这块内存,大小不可在运行期间改变,这是一个弊端。

  • Oracle,启动过程中,通过一些参数的控制,从操作系统分配内存,主要是PGA和SGA。PGA,Program Global Area,程序全局区,是服务器进程(Server Process)使用的一块包含“数据和控制信息”的内存区域,PGA是非共享的内存,在服务器进程启动或创建时分配,并为Server Process排他访问。SGA,System Global Area,系统全局区,用于加载数据、对象并保存运行状态和数据库控制信息的一块内存区域,在数据库实例启动时分配,当实例关闭时释放,每个实例都有自己的SGA区。

  • MySQL,启动过程中,通过一些参数的控制,从操作系统分配内存供系统的一些信息使用,但对于数据缓存(最主要的缓存),却不是以统一方式管理的,这点和PG/Oracle等数据库非常不同。MySQL通过join buffer提供对所需数据的读写管理。


产品特性

PostgreSQL的产品特性

PostgreSQL具有以下主要产品特性:

1、标准通用:实用、高效的通用数据库管理系统

PostgreSQL 基于广泛应用的关系数据模型,遵循SQL国际标准。PostgreSQL 经过大量实际应用的磨合与验证,已成为标准、通用、安全、稳定、实用、高效的数据存储与管理平台。

2、简便易用:图形化交互式管理工具

PostgreSQL 提供了多种图形化交互管理工具,用于对数据库进行方便、高效的管理,如PostgreSQL Manager,phpPgAdmin等。

3、海量存储:强大的大规模数据存储与管理能力

PostgreSQL 结合结构化查询语言的操作能力和过程化语言的数据处理能力,可以有效地支持大规模数据存储与存取,如TB级的数据库的表空间、GB 级的 BLOB 二进制大对象和 CLOB 文本大对象等,并通过各种约束保证数据的完整性和安全性。

4、数据安全:较高的安全性

为应对数据安全保护需求,PostgreSQL V6通过身份鉴别、系统权限、对象权限(表级q权限、列级权限)、用户权限,以及数据访问、传输(利用SSL)等方面的安全性增强提高了数据库系统的整体安全性,可以在一定程度上应对多样的数据安全管理的业务场景,保障数据的安全(但数据的安全,最大的威胁依旧是操作系统)。

5、跨越平台:平台无关性,适用于不同操作系统

PostgreSQL 服务器内核可跨越平台运行在 Windows、Linux、UNIX 等操作系统之上。

6、标准接口:标准化应用接口

PostgreSQL 为应用开发提供了符合标准的 ODBC 3.0、JDBC 3.0、OLEDB 2.7和嵌入式 SQL 接口,应用软件开发者可使用常用的各种开发工具,通过这些接口,进行复杂的商业应用开发。PostgreSQL 服务器端的服务进程与客户端应用通过标准的TCP/IP接口通信。SQL语言符合SQL:1992标准的入门级和过渡级,SQL:1999和SQL:2003的核心级。

7、支持数据库核心功能。

  • 真正的事务型数据库,完全支持ACID四大特性。

  • 数据库完整性支持良好,主外键特性完善(实体完整性,参照完整性)。约束特性完善(用户自定义完整性)。

  • 用户可定义的对象类型丰富。包括:数据库,模式,表,视图,索引,各种约束(NOT NULL/主外键/CHECK),触发器,储存过程,用户自定义函数。丰富的数据类型。

  • 用户可定义内存空间。数据缓存区的管理(设置share_buffer变量)。

  • 存储:用户可定义存储位置,但表空间的管理方式有待继续完善(适用到V9.4)。

  • 并发的支持:MVCC实现并发读不冲突。各种锁(自旋锁,轻量锁,锁)和各种对象的不同级别的锁(读锁,写锁,意向锁)的实现保护了竞争的相同资源。

  • 查询优化技术的支持。高效的查询优化器和执行器,保证了查询执行的效率。 


跨平台能力

MySQL、PostgreSQL、Oracle都支持多种平台,这是一种软件的兼容能力,主要包括2个方面,一是向上兼容,二是向下兼容,这样才能构成完整的软件生态链:

一 向上兼容,通常指的是软件的支持

1 编程语言:

支持编程语言访问数据库,如支持Java使用JDBC访问数据库,支持C/C++使用ODBC访问数据库.
MySQL、PostgreSQL、Oracle都支持多种数据库驱动程序来访问数据库。

2 中间件:

典型如Tomcat、Weblogic等中间件,通常需要和数据库密切配合,实现一些特定的高效的功能。

二 向下兼容,通常指的是软件的依赖

1 硬件平台:

支持各种架构的CPU。

2 操作系统平台

支持各种操作系统。

JSON支持能力

MySQL、PostgreSQL都对JSON提供了支持,用以对Key-Value式的应用提供支持。

PostgreSQL另外提供了更高效率的JSONB数据类型,以支持JSON。

柯普瑞企业IT学院


      柯普瑞企业IT学院创始于2002年,隶属于南京柯普瑞信息技术有限公司。柯普瑞专注于推动政府、企业信息化建设与发展,为客户提供包括:IT培训、IT运维服务、信息安全服务、商业智能服务、OA应用服务及人力资源外包等专业化服务。十多年来已经服务了超过3000家客户,获得了广泛的客户认可!

      柯普瑞企业IT学院长期致力于为政府及企业客户提供专业化IT高端技术培训解决方案,帮助客户进行持续性IT人才梯队建设和培养。公司拥有一支由业内资深专家、厂商资深认证讲师组成的百人专家型职业讲师团队,提供包括网络技术、主机技术、软件开发技术、大型数据库技术、中间件技术、虚拟化技术、信息安全技术、云计算及大数据、IT管理、IT应用等不同专业方向百余门IT技术及管理课程。

      基于客户日趋层次化、多元化的IT业务需求,柯普瑞企业IT学院从IT系统架构、满足核心业务应用角度出发,通过专业化沟通、咨询及评估,设计出合理有效的专业培训实施方案,强调课程的针对性、实用性和高效性,通过IT专家讲师团队提供优质高效的培训服务,帮助客户有效提升员工专业技术能力和工作效率,降低企业运营成本。   

企业使命:

为员工创造价值,为客户创造价值,为社会创造价值,为推动全社会进步而努力!

企业愿景:

成为中国一流的企业IT人才培养解决方案提供商!

服务热线:025-87787966

南京校区:南京市中山东路300号

                长发中心A栋23楼

杭州校区:杭州市下城区东方茂

                商业中心2幢6层

学院网址:www.china-esp.com

扫码关注

更多精彩内容

敬请期待

文章转载自南京柯普瑞信息技术有限公司,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论