今天闲暇之余看到某vx群聊得很火热,这个群聚集了国内不少数据库大咖,其中大家聊到国产数据库遥遥领先了。 最开始主要是一个朋友提到目前很多企业拍板的人并不懂数据库,甚至很多知名数据库都没听过。

然后大家就开始聊到国产数据库了,接着就开始出现一些遥遥领先的库了。

当然对于如何领先,领先多少,实际上实际用过或者测过的一些数据库专家们有一些心得体会,我们来看看大家的真实反馈。

某老牌历史悠久数据库1

据网友反馈是从oracle导入了几个大表到国产上进行了测试,跑相同的SQL,看上去前后性能差了100倍!

当然,我认为去跟Oracle一体机比,确实有点过分了,虽然是一个不懂技术的领导提出来的!

某老牌数据库2

某开源系数据库

当然,这里我不是为了贬低国产数据库,我尝试来解读一下国产数据库的实际情况,毕竟我们也是数据库厂商嘛。 1、有没有有可能,有些业务跑比Oracle快?

答:完全有可能,实际上我们近期一个客户改造国产中,经过我司优化专家调优改写,很多SQL比客户的Oracle原始环境跑的快。 当然,这样比,确实不公平! 如果要非常严谨,那么应该相同硬件,相同(类似)参数配置、数据量以及相同的执行计划,这样比较才有意义。

2、国产数据库跟Oracle的差距在哪里?

答:实际上之前我就写过一些文章提到过,Oracle的强大之处除了很多强大功能如多租户、丰富的观测能力等等之外,实际上我们认为,最厉害的一点还是在于Oracle 强大的CBO优化器。

简单的讲,就是你很多写法不佳的低效SQL,那么经过Oracle 的查询转换之后,那么都能很快跑出结果,而如果放到国产数据库,那么可能就完全跑不动。

就会出现前面提到的oracle 跑了几分钟,某国产跑了6小时的情况。

这个时候如果对SQL 进行适当改写优化,那么应该也能高效跑出结果。

3、基础算子能力

这方面我认为差距也是比较大的,比如全表扫描能力,IRS、IFFS,hash join等能力。

我们曾经对比过,相同数量,分别把几个表导入到不同的国产数据库上进行测试(大概测试了国内主流的6-7种),实际上差别非常大。

就比如最为简单的全表扫,实际上Oracle是可以进行多块读的,每次扫128个Block;而过程数据库几乎均不支持多块读,那么大家可以想想这个差距有多大?

再比如大家常见的hash join,Oracle里面很多时候执行计划不佳,Oracle就倾向于走Hash,但是其效率还是非常高的。

我曾经测试过集中主流国产数据库,再不经过特殊优化,比如使用向量化等操作之前,那么国产数据库的hash join性能普遍比Oracle慢2-3倍。

当然,写这么多,不是说国产数据库都一无是处;相反,我反而希望国产能发展的更好,早日能够真正的,全方位的和Oracle进行pk,且不会败下阵来!

---------------------------------------------------------------------------------------------------------------------------------

喜欢本文的朋友,欢迎关注公众号 Roger的数据库专栏,收看更多精彩内容

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐