百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

MySQL如此万能,为啥还需要商业数据库或PG?

ccwgpt 2025-03-01 13:09 75 浏览 0 评论


最近,小编在知乎上看到这样一个问题:


MySQL已经可以干大部分事情了,还有必要使用商业数据库或者PostgreSQL吗?


这个问题涉及到很多方面。MySQL的innodb引擎有事务了,而且也能进行很多比较复杂的查询,包括嵌套查询等。如果数据量比较大,参考大厂,也能做到很大的集群,把Oracle去掉。而且现在流行的hadoop很多时候都是和MySQL配合的。


这样看起来的话,其它数据库好像都能用MySQL来代替,并且MySQL是开源免费的。如果担心Oracle操控MySQL,还可以选择MariaDB。为何还有那么多企业买商业数据库?一般的商业数据库价格也不低。


还有就是有一种据说比MySQL更开放的PostgreSQL数据库,感觉它的用户没有MySQL的那么多。而且它能做的MySQL都能做,例如查询优化、子查询、索引、分区等等。


为什么不能在所有场景下都使用MySQL呢?


秉持着文明和平的学习态度,以及促进国产数据库生态繁荣发展的初衷(感受到小编满满的求生欲了吗),小编精选了几位知乎网友的精彩回答,分享给大家学习交流(勿上升、勿引战)


1号知乎网友:诗与星空


因为需要背锅侠。


对于商业软件来说,稳定远远比便宜更重要。


真实案例:某年某央企千万级用户百亿金额的上古系统,用的Sybase数据库,在一次常规归档的时候,意外遇到一块硬盘损坏,负责硬件的小哥没有和正在进行归档的团队充分交流,顺手联系厂家换了新硬盘。


做了Raid的磁盘,更换后,会有一段同步数据的时间,恰好这个时候数据库归档进入最为关键的时点。


于是,数据库挂了。


回退也是个问题,因为恢复时间过长,可能会引起社会影响……


之前已经向社会发布公告,原定24小时对外公布48的停机时间,一下子超时了。IT经理通宵加班的时候,顺便准备好了辞呈。


千钧一发的时刻,SAP公司(Sybase被SAP收购)来人了,安排了号称Sybase四大天王的三位,最强的支持团队,又连续奋战了1个通宵,终于在凌晨6点前强行修复成功。


2号知乎网友:温酒


至少有一个场景MySQL是无论如何不能做的,那就是想办法把钱花出去。


成年人的世界里有一条准则:你体现的价值基本取决于你付出什么。


做业务的时候,如果你pay nothing,那么你一定get nothing,哪怕是在技术端,也是一样的。


付钱,在能力允许的前提下,让最多的人赚最多的钱。


那么当你面对危机的时候,就会有无数的人想尽办法来救他们的财神爷了,MySQL这方面的能力几乎是零。


我随便举个例子,银行数据库,要是用MySQL,一旦出了问题,谁来背这个锅?


技术部门?码农最懂码农了,你觉得你背得起吗?背不起?那就老老实实用Oracle或者SQLServer啊,它们有办法背。反正锅甩出去了,不在技术部门员工身上。


其实,选什么数据库,这个问题跟技术一毛钱关系都没有。跟技术有关系的,往往是选完了数据库以后的事情。


3号知乎网友:木风


前某厂员工可以很负责的说一句,去IOE的事迹内部宣传很多次了,就是为了省钱,仅此而已。如果Oracle免费,你看互联网大厂会用MySQL还是Oracle?


不管是性能、架构、对SQL标准的支持度,还是代码质量,Oracle、PG都是甩MySQL好几条街的。


互联网的特点是业务逻辑简单,但是并发量大,那么养一个厉害的中间件团队做好横向扩容就行了,同时尽量不使用复杂和嵌套的sql。某种程度上讲,已经在NoSQL化了,比如为了提高读性能进行的各种denormalization。


至于PG能做而MySQL不能做的,有很多,随便说一个:条件索引。


再说一个,一条插入语句插入n行数据,并返回所有插入行的主键,用mysql自增主键生成器,怎么做?做不到的。


再加一条,将非主键索引建为 clustered index,MySQL压根都不支持。


我差不多在10几秒内就能想到这么多MySQL没法做的事情,怎么会叫MySQL都能支持呢?


4号知乎网友:dbalex


首先,反驳一下题主的问题。


关于你说的“Oracle很差不能满足需要”,这完全是无稽之谈。很多大厂最初就是用的MySQL,后来性能上不去,于是引入了当时互联网行业第一台AIX小型机,跑Oracle,哎哟喂!那个爽啊!可劲用啊!性能完全不是问题啊,DBA生活也很安逸。这种架构在现在被称为“传统架构”,支撑了无数企业各种规模的信息系统。


既然如此,为啥还要去IBM、Oracle、EMC(去IOE),说白了,就是要从钱窟窿里跳出来,随着数据的不断增长,那将是个天文数字啊!


我们来看一下这个架构是怎么烧钱的。要承受不断增长的业务压力,一般来说,无非两种手段,一种是提高主机性能,加CPU加内存;一种是加机器。要知道Oracle license是怎么算的呀,那可是按照CPU个数算的呀!你加多少CPU加多少机器最终都是要加钱的呀!


好,现在来比较一下MySQL跟商业数据库的区别。先来打个比方:如果Oracle比作全聚德,那MySQL就是咸鸭蛋了。都挺好吃的对吧,但你不觉得区别还是挺大的么。那么,比起MySQL,Oracle牛在哪里呢?


1、数据库的心脏在于优化器,Oracle基于成本的优化器跟MySQL的优化器水平可不是差了一点点。


2、Oracle是多进程体系,MySQL是单进程多线程体系。说白了,Oracle可以充分的利用主机的CPU进行并行处理,MySQL则不能充分利用多核CPU。


3、数据安全性,商业数据库对数据提供完善的保护机制,保证关系数据库四原则ACID中D(Durability),并提供完善的售后技术支持服务,而开源的MySQL数据库没有人能给出以上承诺。


这三条是最关键的区别,还有几十条就不在此赘述了。1和2决定了MySQL的性能被Oracle甩出N条街,特别是在OLAP领域,偷偷告诉你,官方版MySQL现在还不支持hash join,Oracle分分钟干完的事,MySQL可能要忙活一晚上;3决定了在一些关键领域,如金融、电信、保险(大行要是每隔几天丢几笔存款,那它估计活不了几天就该关门了)等,MySQL是没有任何立足之地的,除非在一些非关键业务上。


那么,MySQL既然跟Oracle比起来差距这么大,为什么却如此流行呢?


MySQL作为一个开源的数据库,发展速度还是很快的。题主说的关于查询优化、分区等等,确实是借助开源力量的产物,而且InnoDB支持MVCC也是部分商业数据库没有做到的(如IBM DB2),所以MySQL承担一些业务逻辑简单的互联网应用非常合适.


另一方面,MySQL作为免费的开源数据库,扩展的成本是很低的,结合廉价的PC,扩展到几千台甚至上万台的规模用不了多少预算,这就是屌丝流!当然,淘宝那一大堆神仙级的技术牛人可不仅仅是把这几万台机器装上MySQL就算完了,关于他们的神仙事迹,我就不在此多说了,想了解的话就看你自己的执行力了,书籍、博客已经提供了很多你想学到的知识。


如有纰漏,欢迎指正。


5号知乎网友:萝魏紫


让有实际经验的来给你讲讲,百度得到的都没什么用。MSDBA认证,Oracle终生拥护者萝魏紫给你解释下这个问题。


三大关系型数据库:MySQL、MSSQL、Oracle,为什么Oracle卖4倍贵?还有很多公司不用MySQL?为什么MSSQL比MySQL企业版贵3倍,还有很多公司不用MySQL,为什么MySQL有开源版还有很多公司要用企业版?


第一,服务。


我有一个项目,用的Oracle的RAC。我怀疑数据库有问题,一个电话过去,Oracle派一个团队过来——4个人,驻场一个月,调试、测试、出报告,给我把哪些配置配错了?哪些配置可以优化?哪些工具可以用来继续监测?讲得清清楚楚。连不是Oracle的问题,都顺手提出来了。


我还有一个项目,用的MSSQL SEVER AG。我怀疑数据库有问题,电话是不接的。要上网填ticket,然后客服打给你,这种客服你懂的,P用都没有。然后一路升级,到一半,发现你的Window没有打全patch,直接postpone,直到你打全patch再说,我只好请Boss调了自己公司其他部门的Wintel 服务团队过来帮忙看,解决了。


MySQL我没用过企业版,我帮几个朋友调试过他们自己的库。除了满大街查google,还能做啥?要是你一查百度,完了,漫天中文ctrl+c ctrl+v 的blog,前言不搭后语。


第二,健壮性。


Oracle你以为他只是数据库?他卖exadata,整体数据库跑在上面。就算他单独卖的数据库,他的HA集群是自己做的。我十多年用过几百台OracleHA,就没见过所有节点挂掉的。RAC的切换非常快,毫秒级别。而MSSQL的集群,我真实看到过AG内切换所有节点下线几秒钟。而MySQL集群?你能像阿里那样开发大量持久化中间件?不能的话,我有一个解决方案:定期带服务器去庙里烧烧香。


第三,功能性。


Oracle三大工具:AWR、ADDM、ASH report,谁用谁知道,用了都说好。MSSQL 的trace file你要看?对不起,先装个MSSQL客户端。装了你也看不懂,完美符合MS系所有的习惯。要不是找到一个微软内部用的自动分析工具,我是绝对不看trace file的。MySQL 听说有个enterprise monitor,不过没用过。开源版大概只能看看服务器日志,或者装zabbix……


大家对于"MySQL已经可以干大部分事情了,还有必要使用商业数据库或者PostgreSQL吗?"这一问题,有怎样的思考和想法呢?欢迎在留言区交流~



整理丨dbaplus社群

来源丨网址:https://www.zhihu.com/question/21793412

*仅为提供参考和学习交流,不代表dbaplus社群立场!本文为dbaplus社群整理校对,如需转载请标明出处。dbaplus社群欢迎广大技术人员投稿,投稿邮箱:editor@dbaplus.cn

相关推荐

一个基于.Net Core遵循Clean Architecture原则开源架构

今天给大家推荐一个遵循CleanArchitecture原则开源架构。项目简介这是基于Asp.netCore6开发的,遵循CleanArchitecture原则,可以高效、快速地构建基于Ra...

AI写代码翻车无数次,我发现只要提前做好这3步,bug立减80%

写十万行全是bug之后终于找到方法了开发"提示词管理助手"新版本那会儿,我差点被bug整崩溃。刚开始两周,全靠AI改代码架构,结果十万行程序漏洞百出。本来以为AI说没问题就稳了,结果...

OneCode低代码平台的事件驱动设计:架构解析与实践

引言:低代码平台的事件驱动范式在现代软件开发中,事件驱动架构(EDA)已成为构建灵活、松耦合系统的核心范式。OneCode低代码平台通过创新性的注解驱动设计,将事件驱动理念深度融入平台架构,实现了业务...

国内大厂AI插件评测:根据UI图生成Vue前端代码

在IDEA中安装大厂的AI插件,打开ruoyi增强项目:yudao-ui-admin-vue31.CodeBuddy插件登录腾讯的CodeBuddy后,大模型选择deepseek-v3,输入提示语:...

AI+低代码技术揭秘(二):核心架构

本文档介绍了为VTJ低代码平台提供支持的基本架构组件,包括Engine编排层、Provider服务系统、数据模型和代码生成管道。有关UI组件库和widget系统的信息,请参阅UI...

GitDiagram用AI把代码库变成可视化架构图

这是一个名为gitdiagram的开源工具,可将GitHub仓库实时转换为交互式架构图,帮助开发者快速理解代码结构。核心功能一键可视化:替换GitHubURL中的"hub...

30天自制操作系统:第六天:代码架构整理与中断处理

1.拆开bootpack.c文件。根据设计模式将对应的功能封装成独立的文件。2.初始化pic:pic(可编程中断控制器):在设计上,cpu单独只能处理一个中断。而pic是将8个中断信号集合成一个中断...

AI写代码越帮越忙?2025年研究揭露惊人真相

近年来,AI工具如雨后春笋般涌现,许多人开始幻想程序员的未来就是“对着AI说几句话”,就能轻松写出完美的代码。然而,2025年的一项最新研究却颠覆了这一期待,揭示了一个令人意外的结果。研究邀请了16位...

一键理解开源项目:两个自动生成GitHub代码架构图与说明书工具

一、GitDiagram可以一键生成github代码仓库的架构图如果想要可视化github开源项目:https://github.com/luler/reflex_ai_fast,也可以直接把域名替换...

5分钟掌握 c# 网络通讯架构及代码示例

以下是C#网络通讯架构的核心要点及代码示例,按协议类型分类整理:一、TCP协议(可靠连接)1.同步通信//服务器端usingSystem.Net.Sockets;usingTcpListene...

从复杂到优雅:用建造者和责任链重塑代码架构

引用设计模式是软件开发中的重要工具,它为解决常见问题提供了标准化的解决方案,提高了代码的可维护性和可扩展性,提升了开发效率,促进了团队协作,提高了软件质量,并帮助开发者更好地适应需求变化。通过学习和应...

低代码开发当道,我还需要学习LangChain这些框架吗?| IT杂谈

专注LLM深度应用,关注我不迷路前两天有位兄弟问了个问题:当然我很能理解这位朋友的担忧:期望效率最大化,时间用在刀刃上,“不要重新发明轮子”嘛。铺天盖地的AI信息轰炸与概念炒作,很容易让人浮躁与迷茫。...

框架设计并不是简单粗暴地写代码,而是要先弄清逻辑

3.框架设计3.框架设计本节我们要开发一个UI框架,底层以白鹭引擎为例。框架设计的第一步并不是直接撸代码,而是先想清楚设计思想,抽象。一个一个的UI窗口是独立的吗?不是的,...

大佬用 Avalonia 框架开发的 C# 代码 IDE

AvalonStudioAvalonStudio是一个开源的跨平台的开发编辑器(IDE),AvalonStudio的目标是成为一个功能齐全,并且可以让开发者快速使用的IDE,提高开发的生产力。A...

轻量级框架Lagent 仅需20行代码即可构建自己的智能代理

站长之家(ChinaZ.com)8月30日消息:Lagent是一个专注于基于LLM模型的代理开发的轻量级框架。它的设计旨在简化和提高这种模型下代理的开发效率。LLM模型是一种强大的工具,可以...

取消回复欢迎 发表评论: