---
title: TOP 性能，极速体验！Databend v1.0 前瞻

description: “经历近两年的打磨，Databend 终于要发 1.0 版本了！我们深知从零开始构建数据库是一段非常艰辛的历程。从两年前的第一行代码到现在的 30 万行 Rust 代码，记录了 Databenders 小伙伴们的不懈付出。”Rust + Cloud + 先进的技术架构，还有全球 150 多位开发者的贡献

slug: category-engineering/databend-on-top-clickbench-benchmark

date: 2023-03-03

tags: [engineering]

category: Engineering

cover_url: databend-on-top-clickbench-benchmark.png

image: databend-on-top-clickbench-benchmark.png
authors:
  - sundy-li
---

经历近两年的打磨，Databend 终于要发 1.0 版本了！我们深知从零开始构建数据库是一段非常艰辛的历程。从两年前的第一行代码到现在的 30 万行 Rust 代码，记录了 Databenders 小伙伴们的不懈付出。

{/* truncate */}

许多人都非常关注我们是如何从零开始构建数据库的。相比于其他基于成熟底层技术栈的数据库产品，我们的性能表现如何？今天我们来基于最新版本来测试体验下 Databend 的优秀性能。

> 考虑到市场上已经有很多优秀的 OLAP 数据库，我们希望使用一个公开的标准来衡量 Databend 的性能，而不是自己建立测试标准。因此，我们选择了 ClickBench[1]，这是由 ClickHouse 发起的分析型数据库性能测试排行榜，测试数据集为 hits，来自生产环境，使用 clickhouse-obfuscator 工具进行了混淆处理，覆盖了常见的多维报表查询，能够真实地反映各类数据库在生产环境下的性能比较。这个排行榜收录了 Snowflake、Doris、ClickHouse、MySQL、Greenplum、DuckDB 等 50 个主流数据库的测试结果。

> 评测方式是在特定的机型下，将近 70G 的原始数据导入到数据库中，并对比数据的导入时间。接着，对 43 个查询 SQL 进行测试，在每次执行 SQL 之前清空内存缓存，然后重复执行三次，并记录三次执行中耗时最短的一次。ClickBench 考察的是数据库在所有测试场景下的总体表现，因此会将所有数据库在所有场景的评分结果进行对比计算，得出总排名。

**为了展现 Databend 的真实性能，我们没有针对测试场景进行特别优化：**

- 全部使用默认配置，不进行任何参数调优

- 不对数据进行 特定字段分区导入，使用默认建表语句

- 不对原始数据进行 Cache，也不对查询结果进行 Cache，只 Cache 元数据和索引

我们提交了最常见的三种机型的测试结果：

- c6a.metal, 500gb gp2 (192core)

- c6a.4xlarge, 500gb gp2 (16core)

- c5.4xlarge, 500gb gp2 (16core)

### **1** **导入性能，三个机型下均排行第一**

![](../static/img/blog/databend-clickbench-load.png)

特别是在 c6a.metal 机型上，我们的导入性能仅需要 70 秒。与其他数据库的性能表现相比，可以看到 Databend 的导入性能有巨大的优势。这主要得益于 Databend 在向量化并行导入下的极致优化，以及 pipeline 在计算和 io 之间的优秀调度能力。

此外，我们的底层 Storage Access 模块都基于 OpenDAL[2] ，它具有简洁的 API 设计，同时不失原生 API 的性能，覆盖了 s3、fs、memory、ftp、azblob、ipfs 等十多种后端存储。许多优秀的 Rust 项目，如 **RisingWave、Greptimedb、Sscache** 等，都采用了 OpenDAL 作为底层 IO 模块。目前，OpenDAL 即将进入 Apache 孵化器，旨在打造云原生的统一存储底座。

### **2** **查询性能，三个机型下各居一二三**

在 hot run 查询下，Databend 在 c6a.4xlarge 上表现出色，排名第一；在 c5.4xlarge 微弱劣势居第二，c6a.metal 居第三。

![](../static/img/blog/databend-clickbend-c6a-4xlarge.png)

![](../static/img/blog/databend-clickbend-c5a-4xlarge.png)

![](../static/img/blog/databend-clickbend-c6a-metal.png)

得益于 Databend 新的表达式系统设计[3]，所有的算子都已经实现了向量化，并且我们所有的算子都有基于 Domain 值域推导能力。基于此，我们可以应用强大的常量折叠框架来做数据多级裁剪，尽可能略过不必要的数据块。此外，pipeline 的调度能力以及聚合算子的功能也再次加强，使得 CPU 和 IO 能够高效调度，从而发挥极致性能。

**Databend 是面向对象存储而设计的新一代云原生数仓**，并没有对本地 fs 场景做太多优化，在上面榜单中，前三的差距其实并不是很大。因此，在不太擅长的场景中，结合高性能的计算能力，Databend 也可以取得不错的优势。

由于 Databend 使用了默认配置，禁用了 DataCache，因此，在 cold run 场景下，对比意义不大。我们也可以对建表语句做一些针对性的优化（例如，按 UserID 分区导入，优化 Q17 等按 UserId 聚合场景），或者加入一些参数调优，这样性能估计还能再提升一个档次，但面向 Benchmark 调优并不是这次测试的主要意义，以用户为中心，在通用场景带给用户极致的性能、易用的产品体验才是我们的终极目标。

做 Benchmark 主要为了让我们有个衡量性能的方式，从而提升产品质量，ClickBench 测试非常具有代表意义，所以我们将 ClickBench 集成到了各个版本和 PR 的性能测试 CI 中[4]，方便开发者观测性能回退和提升，优化产品开发。

### **3** **更多**

登顶 ClickBench 证明了 Databend 的导入查询性能已经取得非常优异的成绩，从零用 Rust 实现的数据库不一定比 C++ 慢，两年时间我们也可以做出别人十年的成就。 但这只是我们前进的一小步。性能并不能完全体现数据库的全部优点，但它始终是我们数据库内核开发者心中的一个目标。

在 v1.0 即将发布之际，希望有更多的开源爱好者加入 Databend 社区，和优秀的开发者一起协作，打造世界一流的数据库产品！让我们一起携手努力，为数据库技术的进步和发展贡献力量！

### **4** **引用**

`[1]` ClickBench: https://benchmark.clickhouse.com/

`[2]` OpenDAL: https://github.com/databendlabs/opendal

`[3]` Databend 新的表达式系统设计: https://github.com/databendlabs/databend/pull/9411

`[4]` PR 的性能测试 CI 中: https://docs.databend.cn/guides/benchmark/

## Connect With Us

Databend 是一款开源、弹性、低成本，基于对象存储也可以做实时分析的新式数仓。期待您的关注，一起探索云原生数仓解决方案，打造新一代开源 Data Cloud。

- [Databend Cloud](https://databend.cn)

- [Databend Website](https://docs.databend.cn)

- [GitHub Discussions](https://github.com/databendlabs/databend/discussions)

- 社区小 D 微信：Databend
