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,这是市场和技术共同作用的结果。

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/368752.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

在conda 虚拟环境中快速卸载安装包(操作详解)

手动卸载虚拟环境中的安装包 1.卸载已经安装的安装包(不指定版本好) pip uninstall 包名 2.卸载指定的安装包 pip uninstall 包名版本号 注意 “” 不是 “” 批量快速卸载 写一个txt文件,例如aaa.txt。官网一般是requirements.txt&…

NLP_统计语言模型的发展历程

文章目录 统计语言模型发展的里程碑: 上半部分是语言模型技术的进展;下半部分则是词向量(词的表示学习)技术的发展。其中,词向量表示的学习为语言模型提供了更高质量的输入信息(词向量表示) 1…

AI新工具(20240203) 文心一言APP数字分身;HuggingChat Assistants等

文心一言APP数字分身-一键生成专属数字分身 文心一言数字分身是一项新功能,用户只需一张照片和录制三句语音,就能创建一个专属的数字分身。这个数字分身还支持个性化定义名称、声音、MBTI性格等,用户可以选择是否公开自己的数字分身。这个功…

11 插入排序和希尔排序

1. 插入排序 基本思想 直接插入排序是一种简单的插入排序法,基本思想: 把待排序的记录按其关键码值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一个新的有序序列 在玩扑克牌时,就用…

虚拟存储器

第五章:虚拟存储器 常规存储管理方式的特征 一次性 驻留性 局部性原理 程序在执行时将呈现出局部性特征,即在一较短的时间内,程序的执行仅局限于某个部分,相应地,它所访问的存储空间也局限于某个区域 时间局限性 …

创建一个Vue项目(含npm install卡住不动的解决)

目录 1 安装Node.js 2 使用命令提示符窗口创建Vue 2.1 打开命令提示符窗口 2.2 初始Vue项目 2.2.1 npm init vuelatest 2.2.2 npm install 3 运行Vue项目 3.1 命令提示符窗口 3.2 VSCode运行项目 1 安装Node.js 可以看我的这篇文章《Node.js的安装》 2 使用命令提示…

【定位·HTML】

定位布局可以分为以下四种: 静态定位(inherit) 相对定位(relative) 绝对定位(absolute) 固定定位(fixed) 一般的标签元素不加任何定位属性时,默认都属于静态…

STM32标准库——(9)TIM编码器接口

1.编码器接口简介 Encoder Interface 编码器接口编码器接口可接收增量(正交)编码器的信号,根据编码器旋转产生的正交信号脉冲,自动控制CNT自增或自减,从而指示编码器的位置、旋转方向和旋转速度每个高级定时器和通用定…

linux ln命令-linux软链接、硬链接-linux软、硬链接的区别(二):软链接

0、序 上一篇:linux ln命令-linux软链接、硬链接-linux软、硬链接的区别(一):硬链接 描述了硬链接相关内容,本篇主要描述软链接。 1、软链接 符号链接也称软链接,是将一个路径名链接到一个文件。这些文件是一种特别类型的文件。…

已解决!AttributeError: ‘Sequential‘ object has no attribute ‘session‘ 问题

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通Golang》…

【Android新版本兼容】onBackPressed()方法被弃用的解决方案

提示:此文章仅作为本人记录日常学习使用,若有存在错误或者不严谨得地方欢迎指正。 文章目录 一、使用 AndroidX API 实现预测性返回手势1.1 添加依赖1.2 启用返回手势1.3 注册OnBackPressedCallback()方法来处理返回手势 一、使用 AndroidX API 实现预测…

React | Center 组件

在 Flutter 中有 Center 组件,效果就是让子组件整体居中,挺好用。 React 中虽然没有对应的组件,但是可以简单封装一个: index.less .container {display: flex;justify-content: center;align-items: center;align-content: ce…

京东微前端框架MicroApp简介

一、MicroApp 1.1 MicroApp简介 MicroApp是由京东前端团队推出的一款微前端框架,它从组件化的思维,基于类WebComponent进行微前端的渲染,旨在降低上手难度、提升工作效率。MicroApp无关技术栈,也不和业务绑定,可以用于任何前端框架。 官网链接:https://micro-zoe.gith…

Neo4j安装部署(windows、docker)

文章目录 Neo4j安装部署前言windows系统安装解压压缩包并进入bin目录查看neo4j的相关命令访问7474端口 Docker安装Neo desktop安装 Neo4j安装部署 前言 这篇blog所涉及的资源都可以在[neo4j相关资源]进行下载。 windows系统安装 解压压缩包并进入bin目录 查看neo4j的相关命…

正则表达式与文本处理工具

目录 引言 一、正则表达式基础 (一)字符匹配 1.基本字符 2.特殊字符 3.量词 4.边界匹配 (二)进阶用法 1.组与引用 2.选择 二、命令之-----grep (一)基础用法 (二)高级用…

FL Studio 21.2.2官方中文版重磅发布2024最新FL21下载安装图文使用教程

FL Studio 21.2.2中文版惯称水果编曲, 是一个完整的电音软件音乐制作环境或数字音频工作站。是现在流行的数字音频工作站之一,包括撰写,整理,记录,编辑,电音,混音和掌握专业品质的音乐。 FL Studio 21.2.2编曲软件即“Fruity Loops Studio”,简称FL,也就…

【C++初级篇】C++入门

目录 1. C关键字(C98) 2. 命名空间 2.1 命名空间定义 2.2 命名空间使用 3. C输入&输出 4. 缺省参数 4.1 缺省参数概念 4.2 缺省参数分类 5. 函数重载 5.1函数重载概念 5.2 C支持函数重载的原理--名字修饰(name Mangling) 6. 引用 6.1 引用概念 6.2 引用特性 6.3 常引用 6.4…

时间复杂度为 O(n) 的排序算法

大家好,我是 方圆。本文介绍线性排序,即时间复杂度为 O(n) 的排序算法,包括桶排序,计数排序和基数排序,它们都不是基于比较的排序算法,大家重点关注一下这些算法的适用场景。 桶排序 桶排序是分治策略的一…

内网信息收集-Windows篇

目录 内网信息收集 机器角色分析 本机的信息收集 密码信息 如何查找内网的网段 进程、端口、补丁、共享文件夹 总结 域环境信息收集 MSF信息收集 内网信息收集 机器角色分析 1、判断当前主机是什么服务器? web服务器、开发测试服务器、公共服务器、文件服…

[word] 怎么将word文档中的文字转换成一个4行5列的表格 #职场发展#笔记#经验分享

怎么将word文档中的文字转换成一个4行5列的表格 怎么将word文档中的文字转换成一个4行5列的表格? 将文档中的四行文字转换成一个4行5列的表格的具体步骤如下: 1、首先打开需要编辑的Word文档,进入到编辑页面中。 2、然后选中需要编辑的文字…