MySQL 与 PostgreSQL 的体系化对比调研
概览
基于 MySQL 与 PostgreSQL 官方文档,系统比较二者在项目治理、许可协议、存储架构、事务隔离、SQL 兼容、JSON、索引、扩展、复制、备份、安全、运维和元数据系统适配性上的差异。
摘要
MySQL 与 PostgreSQL 均为广泛使用的开源关系型数据库管理系统,但二者在项目治理、许可协议、数据模型、事务隔离、SQL 标准兼容、索引体系、JSON 支持、扩展机制、复制模型、备份恢复和运维特征等方面存在差异。本文基于 MySQL 8.4 LTS 官方文档、PostgreSQL 18 官方文档、MySQL 官方产品文档与 PostgreSQL 官方项目资料,对 MySQL 与 PostgreSQL 进行体系化对比。调研结果表明:MySQL 以 InnoDB 为默认事务存储引擎,围绕关系型 OLTP 场景提供事务、复制、Group Replication、备份、安全和管理能力;PostgreSQL 定位为对象关系型数据库系统,在 SQL 扩展性、类型系统、索引类型、JSONB、扩展机制和逻辑复制等方面提供较丰富的内建能力。二者均支持 ACID、事务隔离、复制、安全连接和备份恢复,但在实现路径、默认隔离级别、扩展能力和生态治理方式上存在差别。
关键词:MySQL;PostgreSQL;关系型数据库;事务隔离;MVCC;JSON;复制;高可用;数据库选型
1. 引言
关系型数据库管理系统是企业应用、互联网系统和基础设施平台中保存结构化数据、事务数据和元数据的重要组件。MySQL 与 PostgreSQL 均属于开源数据库系统,但二者的发展路径、体系结构和能力边界并不相同。
MySQL Community Edition 是 MySQL 官方提供的可免费下载版本,采用 GPL 许可协议。MySQL 官方文档从 8.4 版本开始将发布模型划分为 Long-Term Support 与 Innovation 两条路径,二者均包含 bug 修复与安全修复,并被官方描述为 production-grade quality。1
PostgreSQL 官方将 PostgreSQL 描述为开源对象关系型数据库系统,使用并扩展 SQL 语言,并具有长期的核心平台开发历史。PostgreSQL 采用 PostgreSQL License,该许可证被官方描述为类似 BSD 或 MIT 的宽松开源许可证。3
本文不基于第三方性能评测结论进行判断,也不引用非官方博客作为论据。全文仅基于官方文档中可验证的功能描述,对二者在工程使用中的关键差异进行归纳。
2. 调研范围与方法
本文调研范围包括以下方面:
- 项目定位与许可协议;
- 版本发布模型;
- 存储架构与事务模型;
- 事务隔离与 MVCC;
- SQL 标准兼容性;
- 数据类型与 JSON 能力;
- 索引体系;
- 扩展能力;
- 复制与高可用能力;
- 备份与恢复;
- 安全能力;
- 运维与维护特征;
- 配置中心等元数据型系统场景下的适配性。
本文引用资料主要来自 MySQL Reference Manual、PostgreSQL Documentation、MySQL 官方产品页面、PostgreSQL 官方项目页面和 PostgreSQL 官方许可说明。由于 MySQL 与 PostgreSQL 版本持续演进,本文中与版本相关的描述以 MySQL 8.4 LTS 和 PostgreSQL 18 官方文档为主要依据。
3. 项目定位与许可协议
3.1 MySQL
MySQL 是开源关系型数据库管理系统。MySQL Community Edition 是可免费下载版本,并采用 GPL 许可协议。1 MySQL 还提供企业版、云服务和相关工具链。MySQL 8.4 官方文档将 MySQL 发布模型划分为 Long-Term Support 与 Innovation 两类版本。2
MySQL 的体系结构支持多个存储引擎。InnoDB 是 MySQL 当前默认存储引擎。MySQL 官方文档说明,在未显式指定其他存储引擎时,创建表默认使用 InnoDB。5
3.2 PostgreSQL
PostgreSQL 官方将其定义为开源对象关系型数据库系统,使用并扩展 SQL 语言。3 PostgreSQL 采用 PostgreSQL License,该许可证被官方描述为类似 BSD 或 MIT 的宽松开源许可证。4
PostgreSQL 不是多存储引擎体系,而是以统一数据库内核提供表、事务、MVCC、索引、扩展、复制和 WAL 等能力。PostgreSQL 官方文档同时强调其扩展能力,可以通过扩展向数据库增加函数、数据类型、操作符和索引支持方法等对象。[6]
3.3 对比小结
| 维度 | MySQL | PostgreSQL |
|---|---|---|
| 官方定位 | 开源关系型数据库管理系统 | 开源对象关系型数据库系统 |
| 社区版本许可 | GPL | PostgreSQL License |
| 版本模型 | LTS 与 Innovation 版本轨道 | 按主版本持续发布与维护 |
| 存储架构 | 多存储引擎,InnoDB 为默认事务引擎 | 统一数据库内核 |
| 扩展模型 | 插件、组件、存储引擎等机制 | CREATE EXTENSION 与扩展体系 |
4. 存储架构与事务模型
4.1 MySQL InnoDB
MySQL 支持多个存储引擎,但现代 MySQL 的默认事务存储引擎是 InnoDB。InnoDB 提供事务、行级锁、外键和崩溃恢复等能力。MySQL 官方文档将 InnoDB 描述为兼顾高可靠性和高性能的通用存储引擎。5
InnoDB 通过 buffer pool 缓存表和索引数据。MySQL 官方文档说明,InnoDB 维护自己的 buffer pool,用于在主内存中缓存访问过的表和索引数据。[7]
4.2 PostgreSQL 存储与 WAL
PostgreSQL 使用统一内核管理表、索引、事务和 WAL。PostgreSQL 通过 WAL 支持崩溃恢复、物理复制、归档恢复和逻辑复制等能力。PostgreSQL 官方文档说明,wal_level 参数决定 WAL 写入的信息量,默认值 replica 支持 WAL 归档和复制,包括在 standby 上执行只读查询;logical 则增加逻辑解码所需信息。[8]
4.3 对比小结
| 维度 | MySQL | PostgreSQL |
|---|---|---|
| 存储体系 | 多存储引擎 | 统一内核 |
| 默认事务引擎 | InnoDB | PostgreSQL 内核事务系统 |
| 缓存机制 | InnoDB buffer pool | PostgreSQL shared buffers 与操作系统缓存协同 |
| WAL/binlog | InnoDB redo log 与 MySQL binary log | WAL |
| 扩展存储能力 | 通过存储引擎和组件体系扩展 | 通过扩展、FDW、类型、索引方法等扩展 |
5. 事务隔离与并发控制
5.1 MySQL
InnoDB 支持 SQL:1992 定义的四种事务隔离级别:READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ 和 SERIALIZABLE。MySQL 官方文档说明,InnoDB 默认隔离级别为 REPEATABLE READ。[9]
InnoDB 使用多版本机制支持一致性非锁定读。对于普通 SELECT,InnoDB 在非 SERIALIZABLE 隔离级别下一般使用一致性读快照,不设置锁;在 SERIALIZABLE 隔离级别下,搜索会对遇到的索引记录设置共享 next-key locks。[10]
5.2 PostgreSQL
PostgreSQL 官方文档说明 SQL 标准定义了四种隔离级别,并给出了 PostgreSQL 对隔离级别的实现说明。PostgreSQL 默认事务隔离级别通常为 READ COMMITTED。[11][12]
PostgreSQL 的并发控制章节以 MVCC 为核心。PostgreSQL 在 READ COMMITTED、REPEATABLE READ 和 SERIALIZABLE 级别下有不同的快照行为。PostgreSQL 官方文档还说明,REPEATABLE READ 和 SERIALIZABLE 隔离级别可能产生 serialization failure,应用需要准备重试失败事务。[13]
5.3 对比小结
| 维度 | MySQL InnoDB | PostgreSQL |
|---|---|---|
| 支持隔离级别 | READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLE | READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLE;READ UNCOMMITTED 按 READ COMMITTED 处理 |
| 默认隔离级别 | REPEATABLE READ | READ COMMITTED |
| 并发控制 | InnoDB MVCC、锁、next-key locks | MVCC、锁、SSI 等 |
| 高隔离级别失败处理 | 依赖锁等待、死锁检测等机制 | REPEATABLE READ / SERIALIZABLE 下可能需要处理 serialization failure |
6. SQL 标准兼容性
6.1 MySQL
MySQL 支持 SQL 语言,并包含 MySQL 自身扩展。MySQL 官方文档中包含 MySQL Extensions to Standard SQL、SQL statements、data types 和 functions 等章节。MySQL 的部分语法和行为具有 MySQL 特定扩展属性。
6.2 PostgreSQL
PostgreSQL 官方文档包含 SQL Conformance 附录。该附录说明 PostgreSQL 的开发目标是在不与传统特性和常识冲突的前提下,尽量符合最新官方 SQL 标准;同时也列出了已支持和未支持的 SQL 标准特性。[14]
6.3 对比小结
| 维度 | MySQL | PostgreSQL |
|---|---|---|
| SQL 支持 | 支持 SQL,同时包含 MySQL 扩展 | 支持 SQL,同时包含 PostgreSQL 扩展 |
| 官方 SQL 标准说明 | 文档包含标准 SQL 扩展说明 | 文档包含 SQL Conformance 附录 |
| 方言特征 | MySQL 专用语法和函数较常见 | PostgreSQL 类型、函数、操作符和扩展机制较丰富 |
7. 数据类型与 JSON 能力
7.1 MySQL JSON
MySQL 支持 JSON 数据类型,并提供 JSON 函数和操作符。MySQL 对 JSON 字段的索引通常依赖生成列或函数索引等方式实现。MySQL 官方文档中,JSON 数据类型、JSON 搜索函数、生成列索引和 JSON 列间接索引是独立说明的能力点。[15]
7.2 PostgreSQL JSON 与 JSONB
PostgreSQL 支持 json 和 jsonb 类型。PostgreSQL 官方文档说明,GIN 索引可用于高效搜索大量 jsonb 文档中的键或键值对,并提供不同 GIN operator class,用于不同的性能和灵活性权衡。[16]
PostgreSQL 还提供 JSON 函数、JSON 路径、JSON 构造函数、JSON 查询函数、JSONB containment/existence 操作符等能力。PostgreSQL 的 jsonb 类型在数据库内部以二进制形式保存,用于支持索引和查询操作。
7.3 对比小结
| 维度 | MySQL | PostgreSQL |
|---|---|---|
| JSON 类型 | 支持 JSON 类型 | 支持 json 与 jsonb |
| JSON 查询 | 提供 JSON 函数和操作符 | 提供 JSON/JSONB 函数、操作符、JSON path |
| JSON 索引 | 常通过生成列、函数索引或相关机制实现 | JSONB 可使用 GIN 索引 |
| 半结构化数据能力 | 支持 JSON 存储和查询 | 支持 JSON/JSONB 及较丰富索引能力 |
8. 索引体系
8.1 MySQL
MySQL 支持 B-tree、FULLTEXT、SPATIAL 等索引类型,具体能力受存储引擎影响。InnoDB 支持主键聚簇索引和二级索引。MySQL 官方文档中对二级索引、生成列索引、空间索引和全文索引等能力分别说明。
MySQL 通过 EXPLAIN 提供查询执行计划信息。MySQL 官方文档说明,EXPLAIN 可以展示 MySQL 如何执行语句,并支持传统表格格式、JSON 格式和 TREE 格式。[17]
8.2 PostgreSQL
PostgreSQL 官方文档说明,PostgreSQL 提供 B-tree、Hash、GiST、SP-GiST、GIN、BRIN 和 bloom 扩展索引类型。不同索引类型使用不同算法,适合不同的可索引条件;默认 CREATE INDEX 创建 B-tree 索引。[18]
PostgreSQL 的索引体系与其扩展机制结合较紧密。例如 GIN 用于处理复合值中元素搜索的场景,官方文档将文档包含特定词项作为示例。[19]
8.3 对比小结
| 维度 | MySQL | PostgreSQL |
|---|---|---|
| 默认常用索引 | B-tree | B-tree |
| JSON 相关索引 | 生成列、函数索引等路径 | JSONB + GIN |
| 多索引类型 | 支持多种索引,受存储引擎影响 | B-tree、Hash、GiST、SP-GiST、GIN、BRIN、bloom |
| 可扩展性 | 通过存储引擎、插件、函数等扩展 | 通过扩展、索引方法、操作符类等扩展 |
9. 扩展能力
9.1 MySQL
MySQL 提供插件、组件、存储引擎和函数等扩展机制。MySQL 的存储引擎架构使其可以在不同存储引擎之间提供不同能力。InnoDB 是默认事务引擎,NDB Cluster、MyISAM 等属于不同存储引擎或相关体系。
9.2 PostgreSQL
PostgreSQL 官方文档说明,PostgreSQL 被设计为易于扩展,加载到数据库中的扩展可以像内建特性一样工作。CREATE EXTENSION 会把扩展加载到当前数据库,并记录其创建的对象,以便后续通过 DROP EXTENSION 删除。[6][20]
PostgreSQL 扩展可以创建函数、数据类型、操作符和索引支持方法。PostgreSQL 官方文档还说明,扩展可以包含 SQL 脚本、控制文件和 C 代码构建出的共享库。[20]
9.3 对比小结
| 维度 | MySQL | PostgreSQL |
|---|---|---|
| 扩展路径 | 插件、组件、存储引擎、函数 | CREATE EXTENSION、类型、函数、操作符、索引方法 |
| 扩展对象管理 | 依赖具体插件/组件机制 | 扩展对象可由扩展系统记录与管理 |
| 生态表现 | 常见于存储引擎、认证、审计、企业组件等方向 | 常见于 PostGIS、pgcrypto、FDW、pgvector 等方向 |
10. 复制与高可用
10.1 MySQL 复制与 Group Replication
MySQL 复制基于 binary log。MySQL 官方文档说明,MySQL replication based on the binary log,源库中失败的事务不会写入 binary log,因此不会发送给副本。[21]
MySQL Group Replication 支持 single-primary 和 multi-primary 模式。官方文档说明 Group Replication 的模式是组级配置,默认 single-primary mode。[22] Group Replication 的容错基于分布式协调算法实现,需要多数派成员活动以达到 quorum。官方文档给出可容忍故障数与节点数关系:n = 2 × f + 1。[23]
10.2 PostgreSQL 物理复制与逻辑复制
PostgreSQL 支持 physical replication 和 logical replication。PostgreSQL 官方文档说明,logical replication 基于 replication identity 复制数据对象及其变化,通常使用主键作为复制身份;logical replication 与 physical replication 不同,后者使用精确块地址和逐字节复制。[24]
PostgreSQL 官方文档还说明,logical replication 可基于表级别复制数据变化,并允许细粒度控制数据复制和安全。[24] PostgreSQL 通过 WAL 支持 streaming replication、WAL archiving、PITR 和 standby server。[8][25]
10.3 对比小结
| 维度 | MySQL | PostgreSQL |
|---|---|---|
| 常规复制基础 | Binary log | WAL |
| 高可用机制 | 主从复制、Group Replication、InnoDB Cluster 等 | Streaming replication、logical replication、standby、第三方 HA 管理 |
| 多主能力 | Group Replication 可使用 multi-primary | 原生 logical replication 可支持多方向数据流,但冲突处理需要结合架构设计 |
| 复制粒度 | binary log 事件复制 | 物理复制、逻辑复制、表级发布订阅 |
| Quorum 机制 | Group Replication 需要多数派 | PostgreSQL 原生复制本身不等同于内建共识集群管理 |
11. 备份与恢复
11.1 MySQL
MySQL 官方文档提供 mysqldump 等逻辑备份方式。文档说明,可以使用 mysqldump 将数据库导出为 SQL 文件,并在另一台服务器上使用 mysql 客户端导入。[26]
MySQL 还支持基于复制的快照初始化、binary log、企业备份工具和其他备份方案。不同备份方式与恢复目标、数据量、停机要求和复制拓扑相关。
11.2 PostgreSQL
PostgreSQL 官方文档将备份方式分为三类:SQL dump、file system level backup 和 continuous archiving。官方文档还说明,pg_dump 输出通常可以被重新加载到更新版本的 PostgreSQL 中,而文件级备份和 continuous archiving 与服务器版本更强相关。[27]
PostgreSQL 的 continuous archiving 与 Point-in-Time Recovery 依赖连续归档 WAL 文件。官方文档说明,要成功使用 continuous archiving 恢复,需要一段连续的归档 WAL 文件,至少覆盖备份开始时间之后的区间。[28]
11.3 对比小结
| 维度 | MySQL | PostgreSQL |
|---|---|---|
| 逻辑备份 | mysqldump | pg_dump |
| 物理备份 | 物理文件、企业备份工具、复制快照等 | file system level backup、pg_basebackup |
| 时间点恢复 | 结合 binary log / 备份方案 | continuous archiving + WAL + PITR |
| 跨版本迁移 | 依赖 dump/restore 与兼容性 | pg_dump 输出通常适合重载到较新版本 |
12. 安全能力
12.1 MySQL
MySQL 支持用户、权限、角色、认证插件、TLS 加密连接和密码管理。MySQL 官方文档说明,MySQL 支持多个 TLS 协议和 cipher,并允许配置加密连接可使用的协议和 cipher。[29]
MySQL 官方文档还说明,角色可以影响会话权限;会话权限来自账号直接授予的权限,以及当前激活角色拥有的权限。[30]
12.2 PostgreSQL
PostgreSQL 支持角色、权限、pg_hba.conf 客户端认证控制、SSL 加密连接、行级安全和扩展加密能力。PostgreSQL 官方文档说明,客户端认证由 pg_hba.conf 控制。[31] PostgreSQL 也原生支持 SSL 连接以加密客户端与服务端通信。[32]
PostgreSQL 通过扩展方式提供部分密码学能力。例如 pgcrypto 是官方随附模块之一,用于提供加密函数,并依赖 OpenSSL。[33]
12.3 对比小结
| 维度 | MySQL | PostgreSQL |
|---|---|---|
| 用户与权限 | 用户、权限、角色 | 角色、权限、认证规则 |
| 连接加密 | 支持 TLS 协议和 cipher 配置 | 支持 SSL 连接 |
| 认证机制 | 认证插件、密码管理 | pg_hba.conf、认证方法、角色体系 |
| 加密扩展 | 企业组件、函数与插件 | pgcrypto 等扩展 |
13. 运维与维护特征
13.1 MySQL
MySQL 运维通常涉及 InnoDB buffer pool、redo log、binary log、复制延迟、索引、慢查询、连接数、锁等待、备份恢复和版本升级等方面。MySQL 官方文档提供 Performance Schema、Information Schema、EXPLAIN 和复制状态变量等观测入口。
MySQL InnoDB 表、索引和事务锁信息可以通过相关系统表和 Performance Schema 进行观察。MySQL 官方文档说明,一个 INFORMATION_SCHEMA 表和两个 Performance Schema 表可用于监控 InnoDB 事务并诊断潜在锁问题。[34]
13.2 PostgreSQL
PostgreSQL 运维通常涉及 VACUUM、autovacuum、WAL、checkpoint、replication slot、统计信息、查询计划、索引膨胀、连接数和备份归档等方面。PostgreSQL 官方文档说明,PostgreSQL 数据库需要周期性维护,即 vacuuming;许多安装场景下,使用 autovacuum daemon 执行 vacuuming 已足够,但可能需要调整 autovacuum 参数以取得更好结果。[35]
PostgreSQL 通过 pg_stat_* 视图提供运行状态信息。官方文档说明,pg_stat_ssl 可展示每个后端或 WAL sender 进程的 SSL 使用情况,并可与 pg_stat_activity 或 pg_stat_replication 关联。[36]
13.3 对比小结
| 维度 | MySQL | PostgreSQL |
|---|---|---|
| 常见维护重点 | buffer pool、binlog、复制、锁等待、慢查询、索引 | vacuum、WAL、checkpoint、replication slot、统计信息、索引膨胀 |
| 查询分析 | EXPLAIN、EXPLAIN ANALYZE、Performance Schema | EXPLAIN、EXPLAIN ANALYZE、pg_stat_* |
| 存储维护 | InnoDB 内部机制与表空间管理 | VACUUM / autovacuum 是关键维护机制 |
| 复制维护 | binary log、replica、Group Replication | WAL、replication slot、standby、logical replication |
14. 配置中心类系统中的数据库适配性分析
配置中心类系统通常包含配置定义、配置内容、作用域、发布版本、审批记录、审计日志、灰度规则和权限关系等数据。这类数据具备明显的结构化关系、事务一致性和审计检索需求。MySQL 与 PostgreSQL 均可作为配置中心主库使用,二者均支持事务、索引、备份恢复、复制和安全连接。
对于小型文本配置,例如 YAML、properties、JSON、XML、TOML 等文本内容,MySQL 可通过 TEXT / MEDIUMTEXT 保存,PostgreSQL 可通过 text 保存。对于 JSON 配置,MySQL 提供 JSON 类型和相关函数;PostgreSQL 同时提供 json 与 jsonb,并支持 JSONB GIN 索引。对于大文件、二进制文件、大规则包或模型文件,二者都不是对象存储系统,通常需要额外使用对象存储或文件服务保存内容本体,关系型数据库保存 URI、checksum、大小、版本、格式和发布元数据。
从官方能力描述看,MySQL 在企业常见 OLTP、主从复制、Group Replication、工具链和使用经验方面具有完整资料;PostgreSQL 在对象关系模型、扩展机制、索引类型、JSONB、逻辑复制和 SQL 标准说明方面具有较丰富的内建描述。配置中心类系统最终使用 MySQL 或 PostgreSQL,需要根据已有运维体系、团队技术栈、部署环境、审计要求、JSON 查询复杂度、扩展需求和高可用方案进行验证。
15. 综合对比表
| 维度 | MySQL | PostgreSQL |
|---|---|---|
| 数据库类型 | 关系型数据库管理系统 | 对象关系型数据库系统 |
| 许可协议 | MySQL Community Edition 使用 GPL | PostgreSQL License,类似 BSD/MIT |
| 默认事务机制 | InnoDB | PostgreSQL 内核事务系统 |
| 默认隔离级别 | REPEATABLE READ | READ COMMITTED |
| MVCC | InnoDB 多版本机制 | PostgreSQL MVCC |
| JSON | JSON 类型、函数、生成列/函数索引等方式 | json、jsonb、JSONB GIN 索引 |
| 索引类型 | B-tree、FULLTEXT、SPATIAL 等 | B-tree、Hash、GiST、SP-GiST、GIN、BRIN、bloom |
| 扩展能力 | 插件、组件、存储引擎 | CREATE EXTENSION、类型、函数、操作符、索引方法 |
| 复制基础 | binary log | WAL |
| 高可用能力 | 主从复制、Group Replication、InnoDB Cluster 等 | streaming replication、logical replication、standby、第三方 HA 管理 |
| 备份 | mysqldump、物理备份、企业备份工具等 | pg_dump、文件级备份、continuous archiving、pg_basebackup |
| 安全连接 | TLS | SSL |
| 运维重点 | InnoDB、binlog、复制、锁、慢查询 | VACUUM、WAL、replication slot、统计信息、索引膨胀 |
16. 结论
基于官方文档,MySQL 与 PostgreSQL 均属于成熟的开源关系型数据库体系,均提供事务、索引、复制、备份、安全连接和运维观测能力。MySQL 以 InnoDB 为默认事务存储引擎,并通过 binary log、replication、Group Replication、角色、TLS 和 MySQL 工具链支撑常见企业 OLTP 与高可用场景。PostgreSQL 以对象关系型数据库为定位,通过 MVCC、WAL、json/jsonb、GIN/GiST/BRIN 等索引类型、CREATE EXTENSION、logical replication、continuous archiving 和丰富的系统视图提供能力。
在配置中心类元数据系统中,二者均可满足结构化元数据、版本记录、发布审计和权限关系的存储需求。差异主要体现在 JSON 查询能力、扩展机制、默认隔离级别、复制模型、高可用实现路径和既有运维体系上。关系型数据库适合保存配置定义、版本、审计和小型文本配置;大文件、二进制文件和超大规则包不宜直接作为数据库主表大字段长期存储,宜由对象存储或文件服务保存内容本体,数据库保存引用和元数据。
参考文献
1 MySQL Community Edition 官方说明。 2 MySQL Releases: Innovation and LTS 官方文档。 3 PostgreSQL About 官方说明。 4 PostgreSQL License 官方说明。 5 MySQL InnoDB 官方文档。 [6] PostgreSQL Extension 官方文档。 [7] MySQL InnoDB Buffer Pool 官方文档。 [8] PostgreSQL WAL 与复制配置官方文档。 [9] MySQL InnoDB Transaction Isolation Levels 官方文档。 [10] MySQL InnoDB Locks and Consistent Read 官方文档。 [11] PostgreSQL Transaction Isolation 官方文档。 [12] PostgreSQL SET TRANSACTION 官方文档。 [13] PostgreSQL Serialization Failure Handling 官方文档。 [14] PostgreSQL SQL Conformance 官方文档。 [15] MySQL JSON 与生成列索引官方文档。 [16] PostgreSQL JSON Types 官方文档。 [17] MySQL EXPLAIN 官方文档。 [18] PostgreSQL Index Types 官方文档。 [19] PostgreSQL GIN Indexes 官方文档。 [20] PostgreSQL CREATE EXTENSION 官方文档。 [21] MySQL InnoDB and MySQL Replication 官方文档。 [22] MySQL Group Replication Single-Primary and Multi-Primary Modes 官方文档。 [23] MySQL Group Replication Fault Tolerance 官方文档。 [24] PostgreSQL Logical Replication 官方文档。 [25] PostgreSQL High Availability, Load Balancing, and Replication 官方文档。 [26] MySQL mysqldump 官方文档。 [27] PostgreSQL Backup and Restore 官方文档。 [28] PostgreSQL Continuous Archiving and PITR 官方文档。 [29] MySQL Encrypted Connection TLS Protocols and Ciphers 官方文档。 [30] MySQL Account Categories and Roles 官方文档。 [31] PostgreSQL pg_hba.conf 官方文档。 [32] PostgreSQL SSL Connections 官方文档。 [33] PostgreSQL pgcrypto 官方文档。 [34] MySQL InnoDB Transaction and Locking Information 官方文档。 [35] PostgreSQL Routine Vacuuming 官方文档。 [36] PostgreSQL Monitoring Statistics 官方文档。
文中版本依据来自 MySQL 官方 8.4 Reference Manual 与 PostgreSQL 当前文档页;MySQL 官方文档说明 8.4 Reference Manual 覆盖 MySQL 8.4 系列,PostgreSQL 官方文档页显示当前在线版本为 18。(MySQL开发者区)
项目定位与许可部分依据 MySQL Community Edition、MySQL 发布模型、PostgreSQL About 与 PostgreSQL License 官方页面;MySQL Community Edition 官方说明其采用 GPL,MySQL 发布模型说明 LTS 与 Innovation 两条轨道,PostgreSQL 官方说明其为对象关系型数据库系统,PostgreSQL License 页面说明其许可证类似 BSD/MIT。(MySQL)
事务、并发和存储部分依据 MySQL InnoDB、事务隔离、锁与 PostgreSQL 事务隔离、MVCC、WAL 文档;MySQL InnoDB 默认隔离级别为 REPEATABLE READ,PostgreSQL 默认通常为 READ COMMITTED。(MySQL开发者区)
JSON、索引和扩展部分依据 MySQL JSON/生成列索引、PostgreSQL JSONB/GIN/索引类型与 CREATE EXTENSION 文档;PostgreSQL 官方文档列出 B-tree、Hash、GiST、SP-GiST、GIN、BRIN 和 bloom 等索引类型,并说明 GIN 可用于 JSONB 键或键值搜索。(MySQL开发者区)
复制、高可用、备份与安全部分依据 MySQL replication、Group Replication、TLS、角色文档,以及 PostgreSQL logical replication、streaming replication、backup、PITR、pg_hba.conf 和 SSL 文档。(MySQL开发者区)

参与讨论
评论会同步到 stellhub/stell-web 仓库的 GitHub Discussions。