PostgreSQL 也很强大,为何在中国大陆,MySQL 成为主流,PostgreSQL 屈居二线呢?

本文主要是介绍PostgreSQL 也很强大,为何在中国大陆,MySQL 成为主流,PostgreSQL 屈居二线呢?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题:

  • PostgreSQL 也很强大,为何在中国大陆,MySQL 成为主流,PostgreSQL 屈居二线呢?
  • PostgreSQL 能否替代 MySQL?

当我们讨论为何 MySQL 在中国大陆成为主流而 PostgreSQL 屈居二线时,
我们其实在剖析的是一段技术演进与市场需求相互作用的历史。

首先,我们得承认每种技术都有其诞生和发展的背景。

起初,MySQL 更像是一种轻量级的解决方案,它提供了足以满足基本需求的关系数据库功能。
它的诞生正赶上了互联网的初期波潮,那时候,很多互联网初创企业都需要一种简单、易用且能够迅速部署的数据库系统来支持它们的业务,
而 MySQL 恰好符合这些需求。

MySQL 的优势在于其简单性和性能。
很多早期的应用并不需要复杂的事务管理或者高级的数据库功能;
它们更多地需要的是快速的读写能力和易于水平扩展的架构。MySQL 的 MyISAM 存储引擎在当时提供了非常高效的读取速度,
这使得 MySQL 在处理大量的简单查询时非常迅速。

&nbsp

举个例子来说,如果你的应用是一个内容发布系统,访问量非常大,但事务处理并不复杂,
如多数内容都是读取操作(例如新闻网站或博客平台),那么 MySQL 就很可能是一个合适的选择。
因为在这种场景下,你更关心的可能是如何快速地向用户展示内容,而不是如何处理复杂的数据关系或事务。

随着业务的发展,人们开始逐渐意识到 MySQL 除了简单性能外,也需要强化其事务处理的能力。
这时候,InnoDB 存储引擎开始受到青睐,因为它支持ACID事务,提供了行级锁定(row-level locking)和外键约束,
这些都是企业级应用所需的特性。

&nbsp

然而,PostgreSQL 一直以其作为“最先进的开源数据库”自居,它在事务处理、数据一致性和高级特性上拥有非常强大的能力。
比如,它的MVCC(多版本并发控制)为数据库提供了高级的事务隔离级别,
这对于需要处理复杂查询和保持强数据一致性的金融或者企业级应用来说是非常关键的。

以金融业为例,如果一个银行需要处理成百上千的交易,这些交易之间可能存在复杂的关系,需要确保数据的一致性和安全性。
在这种情况下,PostgreSQL 的高级事务控制、强数据一致性保障和丰富的数据类型(例如,对金融产品进行建模时可能会用到的范围类型或自定义复合类型)就显得尤为重要了。
这可以保证在多用户并发操作下,数据的完整性不会受到威胁。

&nbsp

但 PostgreSQL 在早期有其不足之处,尤其是在易用性和运维上。例如,它长期使用的是多进程模型,
这在管理大量连接时的资源开销要高于 MySQL 的多线程模型。并且,直到近些年 PostgreSQL 才引入了逻辑复制(logical replication),
而 MySQL 在这方面走在了前面。

当然,随着时间的推移,两者都发生了演变。MySQL 增添了诸如存储过程、触发器、视图等高级功能,
而 PostgreSQL 也变得更加易用,新增了对逻辑复制的支持,改善了性能和易用性。

在决定是否能够替换 MySQL时 ,PostgreSQL 需要面对的不仅仅是技术挑战,还有市场和生态的挑战。
MySQL 的普及为其构建了强大的社区支持和丰富的周边工具,而这些对于企业来说是一个不容忽视的优势。
另外,因为很多人才市场上的数据库管理员和开发者更加熟悉 MySQL,这也促成了它的主流地位。

推荐几个学习 MySQL 教程文章

  • 01、MySQL 简介
  • 02、MySQL 管理
  • 03、MySQL 创建连接
  • 04、MySQL 获取数据库列表
  • 05、MySQL 创建数据库
  • 06、MySQL 数据类型
  • 07、MySQL 创建数据表
  • 08、MySQL 插入数据
  • 09、MySQL SELECT FROM 查询数据
  • 10、MySQL WHERE 子句有条件的查询数据
  • 11、MySQL UPDATE 更新数据
  • 12、MySQL DELETE FROM 语句删除数据
  • 13、MySQL JOIN 进行多表查询
  • 14、MySQL 数据库事务
  • 15、MySQL 索引

小结:

PostgreSQL 是否能够扛起大梁并不是一个技术层面能够简单回答的问题。
它涉及到对现有业务的影响、团队的技术栈熟悉度、以及维护和运营的成本等一系列复杂因素。
如果你的应用场景能够从 PostgreSQL 的高级特性中受益,同时你的团队对它也有足够了解,那么它绝对是一个可行的选择。
不过,在大多数情况下,企业可能会因为种种原因继续选择 MySQL,这是市场和技术共同作用的结果。

求一键三连:点赞、分享、收藏

点赞对我真的非常重要!在线求赞,加个关注我会非常感激!@小郑说编程

这篇关于PostgreSQL 也很强大,为何在中国大陆,MySQL 成为主流,PostgreSQL 屈居二线呢?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/676455

相关文章

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

MySQL 中的 CAST 函数详解及常见用法

《MySQL中的CAST函数详解及常见用法》CAST函数是MySQL中用于数据类型转换的重要函数,它允许你将一个值从一种数据类型转换为另一种数据类型,本文给大家介绍MySQL中的CAST... 目录mysql 中的 CAST 函数详解一、基本语法二、支持的数据类型三、常见用法示例1. 字符串转数字2. 数字

Mysql实现范围分区表(新增、删除、重组、查看)

《Mysql实现范围分区表(新增、删除、重组、查看)》MySQL分区表的四种类型(范围、哈希、列表、键值),主要介绍了范围分区的创建、查询、添加、删除及重组织操作,具有一定的参考价值,感兴趣的可以了解... 目录一、mysql分区表分类二、范围分区(Range Partitioning1、新建分区表:2、分

MySQL 定时新增分区的实现示例

《MySQL定时新增分区的实现示例》本文主要介绍了通过存储过程和定时任务实现MySQL分区的自动创建,解决大数据量下手动维护的繁琐问题,具有一定的参考价值,感兴趣的可以了解一下... mysql创建好分区之后,有时候会需要自动创建分区。比如,一些表数据量非常大,有些数据是热点数据,按照日期分区MululbU

SQL Server配置管理器无法打开的四种解决方法

《SQLServer配置管理器无法打开的四种解决方法》本文总结了SQLServer配置管理器无法打开的四种解决方法,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录方法一:桌面图标进入方法二:运行窗口进入检查版本号对照表php方法三:查找文件路径方法四:检查 S

MySQL 删除数据详解(最新整理)

《MySQL删除数据详解(最新整理)》:本文主要介绍MySQL删除数据的相关知识,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、前言二、mysql 中的三种删除方式1.DELETE语句✅ 基本语法: 示例:2.TRUNCATE语句✅ 基本语

MySQL中查找重复值的实现

《MySQL中查找重复值的实现》查找重复值是一项常见需求,比如在数据清理、数据分析、数据质量检查等场景下,我们常常需要找出表中某列或多列的重复值,具有一定的参考价值,感兴趣的可以了解一下... 目录技术背景实现步骤方法一:使用GROUP BY和HAVING子句方法二:仅返回重复值方法三:返回完整记录方法四:

从入门到精通MySQL联合查询

《从入门到精通MySQL联合查询》:本文主要介绍从入门到精通MySQL联合查询,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下... 目录摘要1. 多表联合查询时mysql内部原理2. 内连接3. 外连接4. 自连接5. 子查询6. 合并查询7. 插入查询结果摘要前面我们学习了数据库设计时要满

MySQL查询JSON数组字段包含特定字符串的方法

《MySQL查询JSON数组字段包含特定字符串的方法》在MySQL数据库中,当某个字段存储的是JSON数组,需要查询数组中包含特定字符串的记录时传统的LIKE语句无法直接使用,下面小编就为大家介绍两种... 目录问题背景解决方案对比1. 精确匹配方案(推荐)2. 模糊匹配方案参数化查询示例使用场景建议性能优

mysql表操作与查询功能详解

《mysql表操作与查询功能详解》本文系统讲解MySQL表操作与查询,涵盖创建、修改、复制表语法,基本查询结构及WHERE、GROUPBY等子句,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随... 目录01.表的操作1.1表操作概览1.2创建表1.3修改表1.4复制表02.基本查询操作2.1 SE