DuckDB分析实例

更新时间: 2025-08-15 14:31:25

RDS MySQL DuckDB分析实例以列式存储与向量化计算为核心,实现复杂分析查询性能百倍跃升,为企业在海量数据规模场景下提供实时分析能力,加速企业数据驱动型决策效能。

说明

欢迎您加入RDS产品技术用户交流钉钉群(106730000316),获取更多RDS性能相关信息,您可以在群内进行咨询、交流和反馈。

产品简介

RDS MySQL DuckDB分析实例内置DuckDB引擎,具备如下特性:

  • 高性能分析能力:支持列式存储、即时编译、向量化执行、高效的内存管理和并行处理等能力。

  • 高度兼容MySQL:高度兼容MySQL语法和数据格式,无需修改原始查询语句,即可方便且高效地获取结果。

  • 数据同步机制:

    • 存量数据同步:创建DuckDB分析实例时,系统会从主实例同步存量数据,并自动转换成DuckDB引擎格式。

    • 增量数据同步:DuckDB分析实例创建完成后,主实例的增量数据会通过MySQL Binlog原生复制机制实时同步至DuckDB分析实例。数据始终在RDS内流转,无需依赖外部数据同步工具。技术详情,请参见DuckDB分析实例技术原理

适用场景

  • 聚合分析:对于聚合分析(如日志类数据),DuckDB分析实例可提供高效的聚合查询。

  • 多表连接查询:对于多表JOIN的查询业务,可显著提升MySQL在分析性能上的表现。

DuckDB分析实例、只读实例和OLAP型数据库对比

相比于使用主实例、只读实例或OLAP型数据库进行复杂查询,DuckDB分析实例具备如下优势

  • 性能强:相比InnoDB引擎,复杂查询性能提升两个数量级。

  • 兼容度高:100%兼容MySQL协议和数据类型,高度兼容SQL语法和DDL。

  • 数据同步高效稳定:自建Binlog原生复制通道,同步链路更加稳定高效,无需额外的数据同步费用

  • 资源隔离:DuckDB分析实例处理复杂分析查询,主实例和常规只读实例进行事务处理,资源隔离,互不影响。

对比项

DuckDB分析实例

只读实例

OLAP型数据库

适配业务

复杂分析查询

事务处理

复杂分析查询

分析查询性能

数据同步方式

Binlog原生复制

Binlog原生复制

DTS数据同步链路

MySQL兼容性

数据类型

完全兼容

完全兼容

不兼容(需字段映射)

SQL语法

高度兼容(大于99.9%)

完全兼容

不兼容(需重写SQL)

DDL

高度兼容

完全兼容

少量兼容

运维成本

低(一体化实例)

低(一体化实例)

高(需额外维护数据库及同步链路)

前提条件

如需创建DuckDB分析实例,被挂载的RDS MySQL主实例需满足以下条件:

  • 数据库大版本:MySQL 8.0

  • 产品系列:高可用系列

  • 存储类型:高性能云盘、ESSD云盘

  • 存储空间大小:10 GB~16000 GB

费用说明

DuckDB分析实例的计费与只读实例一致,受产品系列、实例规格、存储类型与存储空间大小等因素影响,具体费用以售卖页显示为准。

注意事项

  • 实例创建时间:DuckDB分析实例创建时,会将该只读实例中所有表的引擎自动转为DuckDB引擎。因此相比只读实例,其创建时间更长(与主实例的数据量有关)。

  • 删除外键:DuckDB分析实例的创建过程中会自动删除外键(DuckDB分析实例中无外键约束)。

  • 自动分发限制:暂不支持代理转发查询请求到DuckDB分析实例。

  • 表结构限制说明:DuckDB分析实例仅支持字符集为UTF8UTF8MB4的表;暂不支持分区表、无业务主键的表(表中既未定义主键Primary Key,也不存在非空字段的唯一约束)。

  • Binlog订阅限制:DuckDB分析实例暂不支持开启Binlog功能,因此无法对其实现Binlog订阅。如有订阅需求,请选择主实例进行订阅。

  • 兼容性限制说明:请参见DuckDB分析实例兼容性说明

创建DuckDB分析实例

  1. 访问RDS管理控制台,在上方选择地域,然后单击目标实例ID。

  2. 基本信息页的实例分布区域,单击DuckDB分析实例右侧的添加

    image

  3. 配置DuckDB分析实例,主要参数说明如下:

    如需对其他参数进行特殊配置,请参见创建RDS MySQL实例

    参数项

    说明

    数据库大版本

    默认与主实例一致,目前仅支持8.0版本。

    存储类型

    默认与主实例一致,支持高性能云盘、ESSD云盘。

    计费方式

    支持包年包月或按量付费,暂不支持Serverless类型

    产品系列

    高可用系列。

    产品类型

    标准版。

    实例规格

    独享规格,CPU与内存规格与只读实例规格一致。

  4. 单击下一步:实例配置,配置实例网络和资源组,主要参数如下:

    如需对其他参数进行特殊配置,请参见创建RDS MySQL实例

    参数

    说明

    VPC

    默认与主实例的VPC一致,不可修改。

    主节点交换机

    使用默认主节点交换机或按需选择。

    实例释放保护

    勾选此项表示为按量付费实例开启实例释放保护(不支持其他计费方式),防止按量付费实例被意外释放。

    资源组

    默认与主实例资源组一致,不可修改。

  5. 单击下一步:确认订单

  6. 确认参数配置,选择购买量,单击确认下单并完成支付。

    如选择包年包月的计费方式,还需选择购买时长。同时建议您勾选到期自动续费,不会因忘记续费而导致业务中断。

查看并连接DuckDB分析实例

DuckDB分析实例拥有独立的实例连接地址,您可通过该地址直接连接DuckDB分析实例。

  1. 登录RDS管理控制台,在左侧单击实例列表,然后在上方选择地域。

  2. 实例列表中找到主实例,单击左侧下拉箭头,可以看到该主实例下的DuckDB分析实例。

    image

  3. 单击DuckDB分析实例ID进入详情页,在基本信息 > 网络类型区域单击查看连接详情,获取连接地址。

    RDS实例默认提供内网地址供您访问,如需外网访问,请先申请外网地址,再连接DuckDB分析实例

相关文档与API

附录1:DuckDB分析实例的技术原理

什么是DuckDB

DuckDB是一款专为嵌入式场景设计的单机OLAP(联机分析处理)数据库,其核心架构能同时兼顾性能分析与事务处理:

  • 高性能分析:列式存储可以显著加速聚合分析类查询,向量化执行引擎可高效处理批量数据。

  • 强大的事务支持:具备完整的ACID事务能力,可通过MVCC(多版本并发控制) 机制在单机环境下实现高效的并发读写操作。

DuckDB分析实例的技术优化

RDS深度集成DuckDB引擎,将DuckDB的高性能分析能力与MySQL生态无缝结合,兼顾高性能分析和事务处理,满足企业在海量数据时代的高效分析需求,同时保障企业级数据可靠性与一致性。

  • 存储引擎优化

    • 将DuckDB的列式存储封装为MySQL内支持事务的存储引擎,通过MySQL标准数据字典管理元数据,确保与主实例事务语义完全兼容。

    • 全面增强Binlog原生同步能力,通过DuckDB的WAL日志实现事务持久化,保障主实例和分析实例数据一致性。

  • 计算引擎增强

    • 集成DuckDB核心组件:将DuckDB的优化器、向量化执行引擎、编译器深度集成,支持即时编译与向量化计算,复杂查询性能较InnoDB提升2个数量级。

    • SQL解析器改造适配:支持99.9%的MySQL语法与函数,确保原有查询语句零修改即可直接执行。

    • 结果格式自动转换:通过Result Translator组件,将DuckDB的计算结果自动转换为MySQL协议兼容格式,实现客户端无缝对接,无需调整现有应用逻辑。

  • 数据同步性能提升

    • 引入攒批机制:将高频小事务批量合并为大事务,显著降低写入延迟。

    • 幂等回放保障一致性:通过Binlog事件幂等性校验,确保数据同步的强一致性。

  • DDL同步优化

    • 自动识别DuckDB支持的DDL操作并直接执行:自动识别DuckDB原生支持的DDL操作(如表创建、加减字段),无需转换,直接路由至DuckDB引擎执行,显著提升性能。

    • 自动重建DuckDB表,保障同步稳定:对于DuckDB不支持的DDL操作,系统自动触发表重建后再执行,避免执行报错导致复制中断。

  • 查询加速与资源隔离

    • 列式存储:数据按DuckDB原生列式格式本地存储,聚合查询性能提升100倍以上(如多表JOIN查询响应时间缩短至InnoDB的1/100)。

    • 热点数据自动缓存:基于DuckDB的Buffer Pool机制,自动缓存高频查询数据,平稳支持高并发业务场景。

    • 资源隔离:DuckDB分析实例与主实例进行资源隔离,分析查询不影响在线事务处理,确保核心业务稳定性。

DuckDB分析实例的工作流程

  1. SQL解析:用户的查询类SQL通过标准的MySQL解析器进行解析。

  2. SQL执行:解析后的查询被路由至DuckDB计算引擎执行。

  3. 获取数据:通过DuckDB存储引擎获取列式数据。

  4. 格式转换:计算结果由Result Translator转换为MySQL协议格式后发送给客户端。

附录2:DuckDB分析实例性能测试

下文以标准TPC-H测试(用于评估数据库复杂查询性能的基准测试)为例,展示DuckDB分析实例在分析查询性能上的表现。

测试环境

  • 数据集:使用TPC-H sf-100数据集,数据规模为100 GB,数据来源于DuckDB 官网

  • 运行环境:各数据库运行在相同规格的ECS主机上,配置为32核CPU、128 GB内存,存储类型均为 ESSD云盘,确保测试环境的一致性。

  • 对比对象:RDS MySQL常规实例(版本号8.0.36、InnoDB引擎)、ClickHouse社区版(版本号25.3)。

  • 测试方法:在保证查询结果一致的前提下,各数据库先进行3轮预热运行(结果不计入统计),随后运行3轮正式测试,并取其平均值作为最终性能结果。

测试结果

以下表格展示了在TPC-H sf-100场景下,DuckDB分析实例、RDS MySQL实例(InnoDB引擎)以及ClickHouse在每条查询(Query)上的执行时间对比。

Query ID

执行时间(单位:秒)

DuckDB分析实例

RDS MySQL常规实例(InnoDB引擎)

ClickHouse

q1

0.92

1134.25

3.47

q2

0.15

1800

1.52

q3

0.53

802.94

3.65

q4

0.46

1000.45

2.77

q5

0.5

1800

5.38

q6

0.22

566.73

0.73

q7

0.59

1800

6.06

q8

0.68

1800

6.99

q9

1.44

1800

13.29

q10

0.91

894.35

3.22

q11

0.11

79.63

1.1

q12

0.44

734.35

1.69

q13

1.59

454.15

5.85

q14

0.38

574.07

0.83

q15

0.31

568.43

1.53

q16

0.32

63.56

0.52

q17

0.89

1800

7.96

q18

1.59

1800

3.11

q19

0.8

1800

2.96

q20

0.51

1800

3.38

q21

1.64

1800

内存不足

q22

0.33

361.4

4

总计

15.31

25234.31

80.01

测试结论

  • DuckDB分析实例对比RDS MySQL实例(InnoDB引擎)

    image

    image

    在TPC-H测试中,RDS MySQL实例(InnoDB引擎)的总执行时间为25234.31秒,而DuckDB分析实例的总执行时间仅为15.31秒,性能差距超过3个数量级。RDS MySQL实例(InnoDB引擎)在处理复杂查询时表现出明显不足,其中q5、q7、q8、q9、q17、q18、q19、q20、q21等查询因超时未能完成,超时时间统一计为1,800秒。表明RDS MySQL DuckDB分析实例针对大规模数据分析查询任务上表现优秀,显著提升了复杂查询的效率。

  • DuckDB分析实例对比ClickHouse

    image

    image

    ClickHouse的总执行时间为80.01秒,相比之下DuckDB分析实例的总执行时间仅为15.31秒,在整体性能上显著领先。ClickHouse在执行q21查询时因内存不足导致报错(Memory limit exceeded),无法完成查询;其余查询中DuckDB分析实例均大幅优于ClickHouse,展现了其复杂分析场景下更强的查询性能和稳定性。

上一篇: 只读实例延时复制 下一篇: DuckDB分析实例兼容性说明
阿里云首页 云数据库 RDS 相关技术圈