从技术层面看,Oracle数据库是不是能把MySQL秒成渣?

知乎 2023-11-20 10:38:00
最近,小编在知乎上看到这样一个问题:

 

从技术层面看,Oracle数据库是不是能把MySQL秒成渣?

 

 

很多童鞋对该问题都回答得非常犀利,还有童鞋戏称“如果把Oracle比作防弹装甲车,MySQL就是爱玛电动车”……于是,小编精选了几位知乎网友的精彩回复,分享给大家学习交流:

 

 

 
 
1号知乎网友:texttime vage
 
 
 

 

秒成渣不至于。只谈技术,不谈信创、自主可控等大环境。

 

数据库的各种算法、架构,有的已经出现几十年,早已被研究透。比如B Tree、WAL日志、优化器的基于成本生成SQL Plan、Buffer的管理等等。

 

MySQL,PostgreSQL,包括数百家雨后春笋一样出现的国产数据库,在这些算法、架构的实现上,不乏可圈可点之处。就算谈不上超越Oracle,但差距也不太大。

 

只谈技术,Oracle真正厉害之处就在于——几乎所有人,都不明白Oracle的厉害之处。你不知道对手强在哪儿?又谈何超越?

 

从技术上,Oracle真正厉害的地方,是对计算体系从上到下的透彻的研究与技术积累。(这种积累不是你进入Oracle公司工作,就能感觉到的。至少达到一定级别,融入其中才行。)

 

简单点说,Oracle数据库的厉害之处,恰恰在数据库之外。

 

举个例子,十几年前,Oracle整合软、硬资源,搞了个Exadata(基于计算存储分离架构,搞的一个小型私有云数据库平台)、RDMA、infiniband、存储过滤等技术,比十来年后,现在最先进的计算存储分离数据库,从技术上Oracle还有领先之处。

 

还有各种细粒度的锁的优化,也都不细说了。好些锁涉及的知识、技术,都在数据库之外。除去ClickHouse带火的SIMD,其他的还有比如l/s/mfenc、Cache一致性、自旋锁优化……

 

你能说出CPU的原子操作有哪些吗?等等,这些东西都在数据库之外。不明白原子操作有哪些,有些不需要锁的地方,来了个自旋锁……

 

这还算明面上的,再往下。研究一下Oracle在执行SQL时的IPC(每周期指令数,衡量程序在CPU上的优化度),吊打MySQL、PostgreSQL和Others。Oracle在CPU级别上细致的优化程度,不是其他数据库能比的。这是最需要技术积累的一块,也是人才最缺乏的领域。要求精通数据库原理、操作系统原理、CPU原理。

 

当然,我如果硬要堆个几百台机器,使用二阶段提交做一致性,数据又足够分散……在测试场景上,性能上超过Oracle也不是什么难事。

 

如何破局呢?MySQL破不了,MySQL本身就属于Oracle,但Oracle数据库定位绝对是最先进的、企业级的数据库,MySQL定位是有开源需求、已经使用MySQL的、对成本敏感的客户。也可能有其他定位,但在Oracle内部,MySQL定位决不会超过Oracle数据库。被Oracle收购后,MySQL的上限就已经确定了。

 

这个上限无论多高,总是会比Oracle数据库要低一点。这话对于MySQL粉丝来说,可能不太好听,但你细想一下,是不是这个理。Oracle不可能将MySQL定的比Oracle数据库还高。

 

PostgreSQL呢?上限到是没有确定,虽有一家依托于PG的公司——EDB,但EDB并不能完全控制PostgreSQL国际社区。不过,缺乏有利的商业支撑,暂时还无法像Oracle哪样,做到从上到下、整合计算机体系所有资源、打造超厉害数据库。

 

但我依然看好PostgreSQL。过去直到现在,它的技术确实落后Oracle。但未来不一定。不确定性,是我们这个世界的客观规律之一(那怕有人说它并不存在)。一个没被人为设定上限的数据库,说不定会出现什么牛人,将之打造成比肩Oracle的数据库。从活跃的PG国际社区看,还有PostgreSQL凶猛的发展势头,我觉得这很有可能。

 

当然,mariadb也不错。

 

 
 
2号知乎网友:BlueDust
 
 
 

 

看了半天不明所以,我完全不懂技术,一行代码也没写过,也从来也没登陆过数据库的界面。所以我只能从市场层面讲讲这个问题。

 

首先目前世界上最稳定、最可靠、最安全的数据库系统是IBM的大机,四大行的核心业务系统,比如卡类业务,比如账务系统都是IBM大机,每年一个银行给IBM的服务费几个亿。这个目前就是这样,对于银行这种必须永远在线、绝对不能出错的系统,能信赖的只有IBM的大机(大型计算机),大机上跑的数据库是IBM的DB2。

 

但是IBM的大机实在是太贵了,除了银行和航空公司这样的超级富豪,就是差一点的土豪也用不起,另外一般行业的业务要求也没有这么高。所以出现了大机的替代方案:小机+数据库。小机就是小型计算机,cpu是risc芯片,操作系统是unix,为了保证高可用,一般都是两台小机互作备份,通过一个光纤交换机连存储。这就是一个典型的HA架构的系统。小机虽然叫小机,但是实际上单机cpu最多可以做到128路,每颗cpu最多做到8core,所以顶配小机单机算力也是可以做核弹模拟运算的。

 

部署在小机上的数据库,最早的有DB2,informax,sybase,Oracle等,在将近二十年的市场竞争中,Oracle最终形成了在小机市场的垄断,其它数据库厂家基本上可以忽略不计了。由于IBM DB2只愿意伺候贵族,对其他客户根本没兴趣,等再想杀入市场的时候,白送都没人要了。(数据库的市场竞争很有意思,有机会再写)

 

抽象得看,部署在小机上的数据库,不管部署在什么生产场景里,其实只干两件事:OLTP和OLAP。OLTP是联机交易数据处理,简单描述就是前台每笔订单都要实时响应、计算、反馈、入库、写入存储。听起来不复杂,但是像电信、电力、铁路等等企业每秒并发随便都是几十万的业务场景,对数据库的处理能力要求就非常高了。OLAP简单讲是对数据库里的数据进行计算分析,输出分析结果,所以OLAP对数据库的要求远没有OLTP高。

 

一开始OLAP/OLTP都在一台小机的一个数据库里完成,但是随着数据越来越多,业务越来越复杂,一般都会把这两种不同性能要求的业务分开部署,所以OLTP还是保持小机+数据库模式,OLAP一般就用PC服务器+开源数据库,有些开源数据库可以承载一些轻量级的OLTP,比如MySQL,比如MariaDB,有些是只能做OLAP,比如PG……所以Oracle在OLAP领域市场就被开源数据库蚕食掉了。

 

因为MySQL本身不是为了企业级高并发环境设计的,MySQL只能在单服务器上Linux环境部署,所以MySQL从本质上讲是无法支撑大企业的OLTP业务的。当然基于现状,某些公司另辟蹊径,拆库拆表,不断切割业务最终用开源数据库承担OLTP……技术上我完全不懂,所以比喻一下,这就相当于把一辆50吨运力的卡车的任务,让10辆5吨小货车去完成。潜在的成本就是系统复杂度大大提高,运维工作量巨大,对于码农劳动力资源及其充沛并且可以对用户分组的业务形态还好办,但对于其他企业恐怕就是灾难。光是数据一致性就能把系统累瘫。所以银行、电信等等在做国产替代的时候,绝大多数都是做OLAP场景下的替代,如果做OLTP,那就要付出巨大的业务成本和人力成本的代价。不是能不能,是值不值。

 

随着小机逐步退出市场,是不是Oracle就完蛋了呢?其实还真不是,从2008年开始,Oracle就在研发分布系统上的数据库。请注意:部署在分布系统上的oracle数据库,和分布式数据库是完全不同的两个概念。2012年开始,Oracle推出了小机+数据库的替代方案,就是exadata一体机,如果拆开一体机,里面其实就是通过infiniband交换机互联的一堆linux服务器。Oracle最厉害的就是,在这种硬件环境里数据库的性能远超传统架构。以前在小机上跑几个小时是任务,甚至以前不敢跑的查询,在一体机上秒级完成。性能上提升巨大。某司曾经完全一样复制过exadata,完全一模一样的硬件,甚至配置比exadata还高的多,但是装上Oracle标准版的数据库,性能不行不说,还每隔几个月当机。所以Oracle在数据库技术上还是有非常独到的技术优势的。可以说,如果Oracle真的搞云数据库,免费不开源,基本上可以屠杀所有现在基于开源的数据库厂商。

 

所以回到问题,装在单机版上的Oracle和MySQL有啥区别?真没啥区别,Oracle的技术特点你也用不上。但是部署到海量并发的生产环境里,区别就大了。至于区别有多大,你遇到就知道了。

 

以上都是瞎扯,没有任何技术含量,不过都是手打。

 

 
 
3号知乎网友:aiirii wong
 
 
 

 

其实数据库对比,并不是简单的对比TPC、TPCC性能而已,最后实际应用还是得综合全面对比;另外,很多数据库其实只是具备OLTP的支持,而Oracle则支持多得多的场景(OLAP、区块链,很多复杂的数据结构和全文检索等的支持)。

 

MySQL是开源免费的,Oracle是商业版收费的,一个企业要用Oracle DB,企业版一套正常要100万起步,标准版也得20万起,但由于之前国内很多使用盗版的。所以,选择很灵活,似乎没有成本差别,这两者常放在一起做比较选择,但实际这两者的差别就如价格的差别这么大。

 

回到技术层面,其实如果按普通用户或者外行看来,只是单库、千万级别的单表数据量,只是单表查询或者1-3个表的联合查询,对数据安全、审计这些没什么要求,只是1个甚至没有全职DBA……那么,在这种场景下,两者是差不多的,甚至Oracle的安装管理还更复杂一点。

 

从我的角度,Oracle DB的优势,还是体现在数据安全、审计控制、高可用、“智能化”专家管理、exadata一体化硬件等,这些方面才是其大大领先竞争对手的地方;

 

如数据安全,Oracle提供了 rac, dg(adg), rman等多种方式,各种flashback闪回,有多种配置方法,可以灵活组合满足各种数据保护需求,每一种要稍微精通都得学习几周到几个月。

 

数据审计,从各种操作权限的管理限制,到日志记录,到通信加密,到数据加密,行级列级的权限控制等。

 

专家管理,Oracle提供了无数途径,让你可以记录和分析从数据库到session到单条SQL的执行细节,让你有方法可以追踪各类问题;

 

数据性能和管理、物化视图、表分区、多种类型的索引支持……都能更好的管理和利用数据;exadata一体化硬件,更是软硬结合,将硬件特性和数据库需求“完美”结合的案例。

 

回到问题本身:Oracle是否能将MySQL秒成渣?那得看具体的应用场景,如果在对数据安全、高可用要求很高的企业,确实Oracle如防弹装甲车对爱玛电动车一样,比MySQL提供多得多的防护手段和管理方法。而如果是在一些普通的场合,则如现在看到的,似乎MySQL也能应付得很好。

 

大家对于"从技术层面看,Oracle数据库是不是能把MySQL秒成渣?"这一问题,有怎样的思考和想法呢?欢迎在留言区交流~

 

 

整理丨dbaplus社群
来源丨网址:https://www.zhihu.com/question/550176101
本文为dbaplus社群整理校对,如需转载请标明出处。dbaplus社群欢迎广大技术人员投稿,投稿邮箱:editor@dbaplus.cn
最新评论
访客 2023年08月20日

230721

访客 2023年08月16日

1、导入Mongo Monitor监控工具表结构(mongo_monitor…

访客 2023年08月04日

上面提到: 在问题描述的架构图中我们可以看到,Click…

访客 2023年07月19日

PMM不香吗?

访客 2023年06月20日

如今看都很棒

活动预告