创建DuckDB分析只读实例

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

产品简介

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分析实例

企业用户试用

企业用户可免费试用规格为8核 16GBDuckDB分析主实例和分析只读实例1个月。符合条件的企业用户,在售卖页下单时费用会显示为0,直接下单即可享受免费试用权益。

  • 每位企业用户可试用分析主实例、分析只读实例各一次。

  • 试用分析主实例点击跳转试用DuckDB分析主实例(规格码为myduck.x2.xlarge.xc,独享型,816GB)。

  • 试用分析只读实例:需要有符合条件的RDS MySQL主实例。您可以参考DuckDB分析只读实例创建流程,在购买页配置以下参数。配置完成后,页面右下角配置费用自动变为0元(即免费试用)。

    • 计费方式选择包年包月。

    • 规格码选择myduckro.n2.xlarge.1c(通用型,8核 16GB)。

    • 购买时长调整为1个月。

  • 试用实例为包年包月实例,试用期(1个月)结束后会自动释放。试用到期后续费或新购DuckDB实例,均可享受优惠,具体折扣以购买页为准。

个人用户申请

个人用户可点击链接申请15免费试用8核 16GB DuckDB分析主实例或分析只读实例。申请通过后,在售卖页下单时费用会显示为0,直接下单即可享受免费试用权益。

  • 每位个人用户仅限二选一试用DuckDB分析主实例或DuckDB分析只读实例。

  • DuckDB分析主实例规格:myduck.x2.xlarge.xc,独享型,816GB。

  • DuckDB分析只读实例规格myduckro.n2.xlarge.1c,通用型,8核 16GB(试用分析只读实例时,需要有符合条件的RDS MySQL主实例)。

  • 个人用户创建试用的分析实例时,实例计费方式需选择按量付费。该实例试用期(15天)内免费,试用结束后恢复正常计费。如后续无需使用,请及时释放实例。

免费体验复杂分析查询能力

您可以前往瑶池数据库解决方案体验馆,免费体验DuckDB分析实例加速复杂SQL查询的能力。

说明

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

适用范围

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

  • 数据库大版本:MySQL 8.0

  • 产品系列:高可用系列

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

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

  • 未开启数据归档功能

费用说明

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

注意事项

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

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

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

    说明

    对于不支持的表,在DuckDB分析只读实例中,其引擎将保留为InnoDB引擎。您可以通过以下SQL进行查询不兼容列表。

    SELECT table_schema, table_name, engine 
    FROM information_schema.tables 
    WHERE table_schema NOT IN ('mysql', 'sys') AND engine = 'InnoDB';
  • Binlog订阅限制:DuckDB分析只读实例暂不支持开启Binlog功能,因此无法对其实现Binlog订阅。如有订阅需求,请选择主实例进行订阅。

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

创建DuckDB分析只读实例

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

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

    image

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

    参数项

    说明

    计费方式

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

    产品系列

    仅支持高可用系列

    产品类型

    仅支持标准版

    主节点可用区

    仅支持选择主实例所在地域下的可用区。

    部署方案

    • 单可用区部署:分析只读实例的主备节点位于同一可用区。

    • 多可用区部署:分析只读实例的主备节点位于同一地域内的不同可用区,实现跨可用区容灾,不额外收费。选择多可用区部署后,需要额外配置备节点可用区。

    实例规格

    支持独享规格和通用规格,具体规格请参见DuckDB分析只读实例规格表

    数据库代理

    开启通用型数据库代理(免费)后,可以实现HTAP自动行列分流,将OLAP查询请求路由至DuckDB分析只读实例,OLTP查询请求路由至主实例或普通只读实例。

    存储空间

    分析只读实例的存储空间需要大于等于主实例存储空间的一半。

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

    参数

    说明

    VPC

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

    主节点交换机

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

    实例释放保护

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

    资源组

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

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

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

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

  7. 等待一段时间后,您可以在实例列表中找到主实例,单击左侧下拉箭头,可以看到该主实例下的DuckDB分析只读实例。

    image

连接DuckDB分析只读实例

(推荐)通过数据库代理连接

当您的业务同时涉及高并发的事务型处理(OLTP)和复杂的分析型处理(OLAP)时,可以通过数据库代理实现HTAP自动行列分流。数据库代理节点会预估SQL语句的查询代价,自动将OLAP查询请求路由至DuckDB分析只读实例,OLTP查询请求路由至主实例或普通只读实例,无需业务侧手动分类数据库请求。

  1. RDS MySQL主实例下添加DuckDB分析只读实例。

  2. 为主实例开启通用型数据库代理

  3. 为主实例开启HTAP行列自动分流

  4. DuckDB分析只读实例分配读权重

  5. 通过代理连接地址连接数据库。数据库代理会根据SQL查询的预估执行代价,自动将请求分发至最适合的实例类型。

直接连接

DuckDB分析只读实例拥有独立的实例连接地址,当您只需处理分析型(OLAP)查询请求时,可通过该地址直接连接DuckDB分析只读实例。

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

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

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

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

相关文档与API

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

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

测试环境

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

  • 运行环境:各数据库运行在相同规格的ECS主机上,配置为32CPU、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,展现了其复杂分析场景下更强的查询性能和稳定性。