HeatWave云服务是Oracle新推出的与MySQL集成的、高性能的基于内存的查询加速器,普通用户可将分析和统计查询的性能提高几个数量级。HeatWave集群支持扩展到数千个内核,比Amazon Aurora快1100倍,比Amazon Redshift快2.7倍,而成本仅为其三分之一。带有HeatWave的MySQL数据库即转变为现在流行的HTAP(Hybrid Transactional/Analytical Processing)数据库架构,支持分析人员和应用程序开发人员在MySQL数据库上直接运行OLTP和OLAP两项工作负载。这大大消除了复杂、耗时且昂贵的数据移动以及与单独分析型数据库集成的需求。该服务针对Oracle云基础设施 (OCI) 进行了优化,当前仅在OCI上提供。
基于HeatWave的MySQL架构如下:

可以看到,HeatWave是基于Plugin的形式添加到MySQL,HeatWave集群可以理解为单独的计算引擎。在OCI上支持2 - 64个节点的部署,每节点包括16个OCPU,512G内存,最小配置(2个节点:32C,1TB内存)即可让普通企业实现秒级数据查询。
本文就MySQL Database Service(简称MDS)与HeatWave的集成使用做一简单对比,以便大家对HeatWave的性能有一定了解。
主要测试步骤如下:
测试表及数据准备
准备MDS VM
在普通MDS中查询测试
HeatWave创建
将数据加载到HeatWave
基于HeatWave的查询测试
本测试中使用公开的cell_powers数据集,原始数据约4.7千万条,约1.6G大小。可从此网站下载:
https://www.opencellid.org/
或https://datasets.clickhouse.tech/cell_towers.csv.xz
直接下载。
测试表结构定义如下:

本测试只是简单对比一下查询性能,执行SQL如下:

1. MDS VM创建
要使用HeatWave,先要创建一个支持HeatWave的MDS VM(注意:如果不是支持HeatWave的VM,则后续无法添加HeatWave支持),如下:

查看配置,选择第一档

选择需要的存储空间,以及是否需要自动备份等。

创建完成。

可以看到,HeatWave还未启用。
另外,为了保证数据安全,创建的MDS无法通过公网直接访问,该服务实例有内网IP,需要在此内网中建立一个其它的计算节点VM,通过此VM访问MDS。如下图所示:

2. MDS测试
查询1

查询2

查询3

查询4

接下来我们基于HeatWave执行上述SQL,首先在现有MDS上添加HeatWave支持。
1. Heatwave准备
由于数据量不大,添加最小2个节点的HeatWave即可。

选择配置

创建中

创建成功
针对cell_towers表,添加新的分析引擎。
MySQL>ALTER TABLE cell_towers SECONDARY_ENGINE = RAPID;
查看表定义
MySQL>show create table cell_towers;

可以看到表已经支持RAPID引擎。
手工将数据加载到HeatWave。
MySQL> ALTER TABLE cell_towers SECONDARY_LOAD;
由于加载时间很短,如果要查询加载进度,需要及时操作。查看加载完成情况:

加载完成。

由于我们的测试表字段数不多,所以4.7亿条记录耗时不到1分钟即加载完成。

在系统表中查看HeatWave引擎已经支持的表。
mysql>use performance_schema;

查询1

查询2

查询3

查询4

以上是未经优化下的查询结果,针对HeatWave的一些优化选项,查询性能还可以进一步提升。

未使用HeatWave引擎时的查询计划,可以看到,只能使用Index进行查询。

本次测试情况:

可以看到,基于HeatWave集群,可将查询性能提升数十倍甚至上百倍,要获得这些优势,不需要修改当前应用和查询语句;另外,为了在生产环境中更易用和提高操作效率,HeatWave也支持数据表的自动加载。更多资讯可参考MDS HeatWave官网。

作者简介
蔡东林,甲骨文云平台数据集成资深咨询顾问,专注于甲骨文数据集成相关产品及解决方案。具有15+年的数据仓库、数据处理经验,熟悉甲骨文相关集成产品,方案和项目实施经验。熟悉电信,银行行业。您可以通过donglin.cai@oracle.com与他联系。




