DuckDB分析实例
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分析实例仅支持字符集为
UTF8
或UTF8MB4
的表;暂不支持分区表、无业务主键的表(表中既未定义主键Primary Key,也不存在非空字段的唯一约束)。Binlog订阅限制:DuckDB分析实例暂不支持开启Binlog功能,因此无法对其实现Binlog订阅。如有订阅需求,请选择主实例进行订阅。
兼容性限制说明:请参见DuckDB分析实例兼容性说明。
创建DuckDB分析实例
访问RDS管理控制台,在上方选择地域,然后单击目标实例ID。
在基本信息页的实例分布区域,单击DuckDB分析实例右侧的添加。
配置DuckDB分析实例,主要参数说明如下:
如需对其他参数进行特殊配置,请参见创建RDS MySQL实例。
参数项
说明
数据库大版本
默认与主实例一致,目前仅支持8.0版本。
存储类型
默认与主实例一致,支持高性能云盘、ESSD云盘。
计费方式
支持包年包月或按量付费,暂不支持Serverless类型。
产品系列
高可用系列。
产品类型
标准版。
实例规格
独享规格,CPU与内存规格与只读实例规格一致。
单击下一步:实例配置,配置实例网络和资源组,主要参数如下:
如需对其他参数进行特殊配置,请参见创建RDS MySQL实例。
参数
说明
VPC
默认与主实例的VPC一致,不可修改。
主节点交换机
使用默认主节点交换机或按需选择。
实例释放保护
勾选此项表示为按量付费实例开启实例释放保护(不支持其他计费方式),防止按量付费实例被意外释放。
资源组
默认与主实例资源组一致,不可修改。
单击下一步:确认订单。
确认参数配置,选择购买量,单击确认下单并完成支付。
如选择包年包月的计费方式,还需选择购买时长。同时建议您勾选到期自动续费,不会因忘记续费而导致业务中断。
查看并连接DuckDB分析实例
DuckDB分析实例拥有独立的实例连接地址,您可通过该地址直接连接DuckDB分析实例。
登录RDS管理控制台,在左侧单击实例列表,然后在上方选择地域。
在实例列表中找到主实例,单击左侧下拉箭头,可以看到该主实例下的DuckDB分析实例。
单击DuckDB分析实例ID进入详情页,在
区域单击查看连接详情,获取连接地址。RDS实例默认提供内网地址供您访问,如需外网访问,请先申请外网地址,再连接DuckDB分析实例。
相关文档与API
相关API
通过API(CreateReadOnlyDBInstance)创建DuckDB分析实例。
通过API(DescribeDBInstanceAttribute)查询指定DuckDB分析实例详情。
通过API(DescribeDBInstances)查询账号下所有RDS实例(包含DuckDB分析实例)的基本信息。
附录1:DuckDB分析实例的技术原理
什么是DuckDB
DuckDB分析实例的技术优化
DuckDB分析实例的工作流程
附录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引擎)
在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
ClickHouse的总执行时间为80.01秒,相比之下DuckDB分析实例的总执行时间仅为15.31秒,在整体性能上显著领先。ClickHouse在执行q21查询时因内存不足导致报错(
Memory limit exceeded
),无法完成查询;其余查询中DuckDB分析实例均大幅优于ClickHouse,展现了其复杂分析场景下更强的查询性能和稳定性。