暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Doris vs MySQL:相似的协议,不一样的设计理念

数据微光 2025-01-15
650

 


更多精彩内容请关注数据微光

引言

很多人因为 Apache Doris 兼容 MySQL 协议就误认为它是 MySQL 的替代品。实际上,这两个数据库系统有着完全不同的设计理念和应用场景。本文将深入剖析两者的异同,帮助读者做出正确的技术选型。

本质区别

1. 设计目标不同

  • MySQL

    • 面向 OLTP(在线事务处理)场景
    • 擅长处理高并发的小规模查询和事务
    • 强调数据一致性和实时性
  • Apache Doris

    • 面向 OLAP(在线分析处理)场景
    • 专注于复杂分析查询
    • 强调查询性能和数据吞吐量

2. 核心架构差异

存储模型

  • MySQL: 行式存储

    • 适合单条记录的快速读写
    • 事务处理效率高
    • 对于分析类查询需要扫描大量无关数据
  • Doris: 列式存储

    • 更适合批量数据扫描
    • 更好的数据压缩比
    • 分析查询时可以只读取需要的列

计算引擎

  • MySQL

    • 基于行的处理模型
    • 单机架构为主
    • 优化器偏向 OLTP 场景
  • Doris

    • 向量化执行引擎
    • MPP 分布式架构
    • 针对分析场景的查询优化

性能对比实验

实验环境与测试方法

硬件环境

硬件配置
说明
机器数量
1 台阿里云主机(1 个 FE,1 个 BE)
CPU
Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz 16核
内存
32G
磁盘
HDD

软件环境

软件配置
说明
Doris 版本
doris-2.1.6-rc04-653e315ba5
mysql 版本
8.0.33-0ubuntu0.20.04.2
内核版本
Linux iZ2ze3txre2ntrq0yyt1haZ 5.4.0-153-generic
操作系统版本
Ubuntu 20.04.6 LTS (GNU/Linux 5.4.0-153-generic x86_64)
JDK
openjdk version "1.8.0_351"

测试方法

  • 数据集:使用 SSB flat 数据集,数据量 59,986,052 条。
  • SQL 查询:从 Apache Doris GitHub(https://github.com/apache/doris/tree/master/tools/ssb-tools/ssb-flat-queries) 获取标准化的 SQL 查询语句,确保测试的一致性。
  • 测试工具:使用自动化脚本运行查询,减少人为操作误差,提高测试效率和准确性。

测试结果

MySQL 查询结果

Query
Cold Run (ms)
Hot Run 1 (ms)
Hot Run 2 (ms)
Best Hot Run (ms)
q1.1
111632
104770
170151
104770
q1.2
175554
176682
177559
176682
q1.3
176421
177102
176392
176392
q2.1
186856
185719
96202
96202
q2.2
112733
81387
81262
81262
q2.3
79064
78968
79299
78968
q3.1
169451
163487
97412
97412
q3.2
81387
84884
82330
82330
q3.3
84173
81508
81845
81508
q3.4
81611
82503
81471
81471
q4.1
92525
91998
92748
91998
q4.2
89785
90591
90111
90111
q4.3
87239
87733
92861
87733

Doris 查询结果

Query
Cold Run (ms)
Hot Run 1 (ms)
Hot Run 2 (ms)
Best Hot Run (ms)
q1.1
192
135
132
132
q1.2
124
107
103
103
q1.3
142
113
123
113
q2.1
538
138
129
129
q2.2
153
152
148
148
q2.3
117
121
118
118
q3.1
395
190
203
190
q3.2
359
151
147
147
q3.3
149
130
132
130
q3.4
94
95
105
95
q4.1
301
178
155
155
q4.2
127
119
119
119
q4.3
118
114
109
109

性能对比

通过对比 MySQL 和 Doris 的查询结果,Doris 在性能上的优势显而易见。

数据分析

Query
MySQL Best Run (ms)
Doris Best Run (ms)
Doris 是 MySQL 的倍数
q1.1
104770
132
794.47
q1.2
176682
103
1715.36
q1.3
176392
113
1561.07
q2.1
96202
129
745.76
q2.2
81262
148
548.26
q2.3
78968
118
669.22
q3.1
97412
190
512.69
q3.2
82330
147
560.68
q3.3
81508
130
627.75
q3.4
81471
95
857.59
q4.1
91998
155
593.54
q4.2
90111
119
757.90
q4.3
87733
109
804.89
Total
1300941
1688
770.80

Doris 的查询性能比 MySQL 快了数百到上千倍,整体查询速度提升约 770 倍。这种巨大的性能差异使得 Apache Doris 在大数据场景下具有显著优势。

性能差异分析

从测试结果可以看出,在分析类查询上,Doris 比 MySQL 快了约 770 倍。这种差异主要源于:

  1. 存储结构优势

    • Doris 的列式存储减少了 I/O
    • 更高的数据压缩比
    • 更好的缓存利用率
  2. 计算引擎优势

    • 向量化执行提升 CPU 利用效率
    • 分布式并行计算能力
    • 专门针对分析场景优化的执行计划

如何选择?

适合使用 MySQL 的场景

  • 需要强事务支持的应用
  • 频繁的单行数据操作
  • 并发用户数较多的 OLTP 系统
  • 数据量相对较小(TB 级以下)

适合使用 Doris 的场景

  • 数据仓库和数据分析
  • 需要实时分析的场景
  • 大规模数据集(TB/PB 级)
  • 复杂的聚合查询

结论

Doris 虽然兼容 MySQL 协议,但这仅是为了降低使用门槛,两者的本质是不同的。在选型时,应该根据业务场景的特点,而不是简单地因为协议兼容性来做决策。

  • 如果你的系统以事务处理为主,选择 MySQL
  • 如果你需要进行海量数据分析,选择 Doris
  • 在某些场景下,两者还可以结合使用,取长补短

写在最后

技术选型无绝对,理解系统初衷,洞悉优劣势,方能做出最适合的选择。

欢迎持续关注我们,探索更多数据库技术的奥秘!



往期推荐

「FE 倒下了,但我挺住了」—— Doris FE 挂机应急指南

从源码到运行:深入解析 Apache Doris 的编译与 Debug 流程

成为 Apache 顶级项目贡献者之路:Apache Doris 的语法迁移攻略

【Apache Doris】数据副本问题排查指南

数据微光 专注分享 Apache Doris 的最佳实践、问题解决技巧、学习资源和实用案例,致力于为开发者和技术爱好者提供高质量内容支持和持续学习动力。

📚 特别福利 | 数据微光知识库内含Apache Doris丰富的 学习资料、实战课程、白皮书、行业报告、技术指南,帮助快速掌握数据库核心技能!

📘 领取方式: 关注 “数据微光” 公众号 扫描下方二维码,备注【Doris】即可免费获取! 💻 让我们携手点亮技术微光,共同探索 Doris 的无限可能!







关于社区





Apache Doris

Apache Doris 是一个基于 MPP 架构的高性能、实时的分析型数据库,以极易易用的特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据下的查询结果,不仅可以支持高并发发点查询场景,也能支持高吞吐的复杂分析场景。

如果您对 Apache Doris 感兴趣,可以通过以下入口访问官方网站、社区论坛、GitHub 和 dev 邮件组:

  • 📒 官方文档: https://doris.apache.org
  • 💬 社区论坛: https://ask.selectdb.com
  • 📂 GitHub: https://github.com/apache/doris
  • 📧 dev 邮件组: dev@doris.apache.org

可以加 作者微信 (hhj_0530) 直接进 Doris 官方社区群。

PowerData

PowerData 是由一群数据从业人员,因为热爱凝聚在一起,以开源精神为基础,组成的数据开源社区。

社区群内会定期组织模拟面试、线上分享、行业研讨、线下 Meetup、城市聚会、求职内推等活动。同时,在社区群内您可以进行技术讨论、问题请教,结识更多志同道合的数据朋友。

社区整理了一份每日一题汇总及社区分享 PPT,内容涵盖大数据组件、编程语言、数据结构与算法、企业真实面试题等各个领域,帮助您提升自我,成功上岸。

可以加 作者微信 (hhj_0530) 直接进 PowerData 官方社区群。



点击上方蓝字关注我们

文章转载自数据微光,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论