前几天听说 OceanBase 打榜了 TPCH 的第一名,之后又看到这样一个测试报告《OceanBase 开源版与 TiDB 对比测试报告》。
先点评一下这个测试报告:
1. 坦白地说,这个测试还不太专业,并不能比出分布式大数据计算的关键能力。TPCH10G 的数据量相对于这些机器内存实在太小了(单机内存都超过数据量 18 倍以上)。这种情况下,再加上预热,数据已经全部缓存到内存了,列存基本不起作用,也就谈不上对比列存引擎的能力了。而且,数据量太小,会被作为小表复制到集群中的每个节点,分布式计算中重要的 Shuffle 能力也无法被考查到,网络负担仅仅是些汇总结果的传输,而 TPCH 的结果集都很小,这个时间可以忽略不计。
2. 目前这个数据量对比的是纯 CPU 计算能力,本质上是在对比 SQL 优化引擎的能力。如果直接按 SQL 书写的逻辑去计算,那计算量通常会很大,也就会很慢了。但数据库都会有优化,不会严格按 SQL 的逻辑来计算,会在不改变运算目标时尽量采用更低复杂的算法,就可能跑得更快了。从这个测试结果上看,TiDB 的 SQL 优化引擎要明显强过 OceanBase。
以往的经验,Oracle 的 SQL 优化引擎做得很好。如果不能在列存和集群上占便宜的话,很多专业 OLAP 数据库都跑不过 Oracle。而当前这个场景就是这样,数据量太小可以全部缓存进单机的内存,列存失去意义,集群也沦为简单地用多机分摊运算。所以我们猜测 Oracle 会比这两个都快,单机的 Oracle 甚至有可能跑过集群的 OceanBase。
之前我们还用