亿级数据查询快如闪电

浏览次数:917 最新更新:老慢 于 2023-09-09

“性能”是所有IT工程师最关心的问题,这里我们不讨论“并发性能”,只讨论“查询性能”,因此任何系统从用户少到多,最开始关注的就是“查询性能”,用户多起来后才会有“并发性能”的问题。如果你了解查询性能的大致原因,就知道性能表现只是结果,需要拆解数据库、网络传输、报表引擎、前端展现等不同环节,此文想证明的是电子表格软件(报表引擎)的性能没有问题,所以另外3个环节的响应时间是几乎可忽略的。

背景交待后,我们先看看这个视频,感觉一下从亿级数据库做查询有多快:

你也可以自己点击操作试试,直接打开这张报表就可以(不适合手机打开)。

如果你对性能没有太多钻研,看到这里就够了,结论是电子表格软件的核心查询引擎是可以支撑大数据量的,而且性能响应可以快如闪电

如果你想继续深入探讨,我们可以先说明一些事实,再解答可能的困惑:

1、数据量为9800万条,存储在同网段clickhouse的一张表中

2、其中筛选条件——年,是对这张表中字段做distinct实时计算的

3、显示结果进行了分页,分页数量超过100万

这样的设计,只是想规避另外3个影响最终查询性能的因素,这样才可以用来回答关键的问题——报表引擎的性能如何!假设用Mysql或者Oracle存储9800万条数据,,那么大部分时间都花在数据库SQL语句的返回上;假设数据库在某云平台,1Mbps的带宽也需要等待不少时间;假设没有分页,数千万的单元格要渲染到html页面上,恐怕不是性能问题了,估计内存都会溢出导致系统崩溃。

好的,你一定已经理解我们没有作弊,只是非常科学的屏蔽掉干扰因素。但你可能还会对这个结果感到不可思议,我们就多解释一下,电子表格软件的报表引擎在“过滤”和“聚合”两个核心计算上,都是交给数据库完成的。为什么,很简单!数据库天生就是擅长做过滤和聚合的,如果我们自己在内存里做这样的处理,做得好的话就是个内存数据库(代价是把数据全部搬进来,也是不可能的),做得不好的话,就会性能很差!!

有网友正好做了我们和友商的性能对比,测试数据很全面,而且也用的这个数据集,大家可去围观一下。

————————————————

立足经典、真Excel设计、社区版永久免费!立即下载使用,开启高效报表开发之旅!

Demo体验

返回顶层