PolarDB MySQL 版 Serverless评测

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 对PolarDB的Serverless能力从多维度进行测评

一、了解

PolarDB是阿里自研的新一代国产云原生数据库,有Mysql版、PostgreSQL版以及分布式版。而Serverless是一种架构形态,即用户无需采购与管理服务器等基础设施,只需关注数据库服务本身。基于这种架构的数据库具备强大的弹性伸缩能力,做到真正负载与资源动态匹配,可最大程度地利用好资源。

Serverless集群的技术架构图

计算架构

从上图可以很直观地理解基于Serverless技术架构的数据库,不仅可以提供网络资源、命名空间、存储空间的垂直资源隔离能力,还提供计算存储资源高弹性、动态匹配的能力,可进一步助力企业降本增效。

二、上手

开通试用

在正式体验产品之前需要先开通产品试用,你可以通过免费试用中心,搜索关键字mysql获取产品,点击立即试用;如图:

image.png

也可以通过本次评测活动首页的立即试用开通产品试用,如图:

image.png

点击立即试用后,来到产品试用开通页面,勾选必要选项,如图:(这里我选择了最新版的mysql,方便后续使用)

image.png

这里地域和可用区保持默认就好,如手动选择偏好的区域可能会出现“服务器资源不足,请工单联系管理员”情况,如图:

image.png

继续配置产品,在“是否开启活动暂停”选项中,我选择了开启,可以更好地使用Serverless特性。其他配置默认。如图:

image.png

接着需要给集群取一个响亮好记的名称。其他配置默认。如图:

image.png

继续往下走,可以直观地看到本次试用的产品规格,不得不说阿里的产品试用还是蛮厚道的,配置管够。勾选服务协议,点击立即试用。如图:

image.png

看到下图就恭喜你,顺利完成产品试用的开通。如图:

image.png

同时你也可以在用户中心——我的试用里看到领取的试用资源包,分别是PolarDB存储包和Serverless资源包。如图:

image.png

产品概览

通过云数据库PolarDB控制台可以看到产品的真面目,如图:

image.png

上图很直观地呈现了当前正在运行的实例情况以及所在地域信息。点击导航栏的集群列表,可以来到集群详情页。如图:

image.png

点击集群ID可以来到集群的详情页,在这里你不仅可以看到集群的所有信息,还可以实现对集群的所有操作。如图:

image.png

image.png

高效直观的性能监控,可以方便快捷地及时发现性能瓶颈。如图:

image.png

image.png

image.png

场景实验

准备工作

下面就针对PolarDB的Serverless能力通过实验进行验证,在开始实验之前,需要设置Serverless,在基本信息页面的数据库节点区域中,单击右上角的Serverless配置。如图:

image.png

按照需要,配置好参数,如图:

image.png

点击确定,集群进入配置切换状态,需稍等片刻。如图:

image.png

切换完成后,可以直观地看到数据库节点发生了变化。如图:

image.png

接下来将通过Sysbench脚本压测来验证数据库节点的Serverless能力。Sysbench是一款开源的多线程性能测试工具,可以执行数据库只读、只写、读写混合等类型的性能测试。

在开始压测之前,需要先配置数据库,新增集群白名单,创建数据库并设置账号。点击左侧导航栏的配置与管理——集群白名单,新增IP白名单分组。如图:

image.png

账号管理——创建账号,输入账号名称、选择高权限账号,输入密码。如图:

image.png

数据库管理——创建数据库,输入数据库名称,字符集选择utf8,选择账户。如图:

image.png

数据库主节点弹性压测

准备工作完成后,开始压测,这里使用读写混合的压测类型(oltp_read_write),并发数为32线程。接下来需要在ECS服务器中初始化相关数据。这里提到的ECS服务器需要保持同数据库在同一个地域,否则跨地域连接传输需要消耗带宽费用。初始化脚本如下:

sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-host=pc-uf6uuoclu007f0399.rwlb.rds.aliyuncs.com --mysql-port=3306 --mysql-user=test_user --mysql-password=Password123 --mysql-db=sbtest --tables=128 --table-size=1000000 --report-interval=1 --range_selects=1 --db-ps-mode=disable --rand-type=uniform --threads=256 --time=12000 prepare

#参数说明
--mysql-host       MySQL服务器的主机名或IP地址
--mysql-port       MySQL服务器的端口号
--mysql-user       MySQL的用户名
--mysql-password   MySQL的登录密码
--mysql-db         MySQL的数据库名
--tables           表的个数
--tables-size      每个表的行数
--report-interval  以间隔时间为秒定期上报中间统计信息
--range_selects    启用/禁用所有范围 SELECT 查询
--db-ps-mode       如果选用的数据库驱动支持预处理语句(Prepared Statement) API,那么sysbench就会在所有查询中尽可能地使用服务端的预处理语句。否则,就会使用客户端(或模拟端)的预处理语句。即使当PS API可用时,这个选项也允许强制使用模拟方式。可选的值有auto、disable(默认值为auto)
--rand-type        随机型随机数分布{uniform, gaussian, special, pareto, zipfian}
--threads          工作线程总数
--time             总执行时间限制

image.png

ECS服务器中执行下面的命令,开始对数据库主节点进行256个线程的并发读写混合压测。

sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-host=pc-uf6uuoclu007f0399.rwlb.rds.aliyuncs.com --mysql-port=3306 --mysql-user=test_user --mysql-password=Password123 --mysql-db=sbtest --tables=128 --table-size=1000000 --report-interval=1 --range_selects=1 --db-ps-mode=disable --rand-type=uniform --threads=256 --time=12000 run

image.png

根据Sysbench的输出可以直接观察到,随着时间推移,在同样的并发数下,tps逐渐上升,延迟(lat)逐渐下降,最终到达一个稳定值。

此时点击左侧导航栏中,单击性能监控。在监控页上,单击计算节点。如图:

image.png

从监控图上可以很直观地看到随着主节点PCU、CPU使用率的不断提升,PCU数量从1分钟内从1 PCU弹升到最大上限32 PCU。

回到ECS服务器,停止正在运行的压测请求脚本。

image.png

可以观察到,当压测请求完全停止后,主节点PCU CPU使用率会立即下降,而PCU数量随后也会逐步自动缩小至1 PCU。

通过本次压测可以很直观地看到PolarDB主节点的规格能够根据负载进行自动伸缩与自动配置,达到Serverless的灵活弹性能力。

数据库只读节点弹性压测

在开始只读节点的压测前需要重新配置集群的Serverless,在基本信息页面的数据库节点区域中,单击右上角的Serverless配置。将只读节点个数扩展上限0调整为最大值7,其他配置保持不变。如图:

image.png

读写混合压测

待集群配置切换完成,将在ECS服务器中执行压测脚本,开始对数据库只读节点进行512个线程的并发读写混合压测。脚本如下:

sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-host=pc-uf6uuoclu007f0399.rwlb.rds.aliyuncs.com --mysql-port=3306 --mysql-user=test_user --mysql-password=Password123 --mysql-db=sbtest --tables=128 --table-size=1000000 --report-interval=1 --range_selects=1 --db-ps-mode=disable --rand-type=uniform --threads=512 --time=12000 run

image.png

根据Sysbench的输出可以直接观察到,随着时间推移,在同样的并发数下,tps逐渐上升,延迟(lat)逐渐下降,最终到达一个稳定值。

此时点击左侧导航栏中,单击性能监控。在监控页上,单击计算节点。如图:

image.png

从监控可以看出,PolarDB收到读写混合请求后,主节点会首先迅速弹升到最大的32 PCU,之后监控逐步出现两个只读节点。当只读节点分摊主节点的读请求后,主节点CPU使用率逐步下降,规格最终稳定在24 PCU。

image.png

从图上可以看到,第一个只读节点创建后,也会立刻弹升到32 PCU。此时系统会尝试继续创建只读节点,分摊读请求。因此当第二个只读节点创建后,第一个只读节点负载降低,规格自动弹降。

image.png

image.png

由于目前2个只读节点都没有到最大规格32 PCU,系统判断目前Serverless规格已经满足实际负载,不会再继续增加新的只读节点。

依据上图可以看到,在读写混合场景下,读写流量会首先转发到集群唯一节点,即主节点(RW)中。当主节点弹升到最大规格后,Serverless系统会逐个创建只读节点,分摊主节点的读请求,直到只读节点的数量满足当前负载。当只读节点分摊读请求后,主节点负载会降低,触发PCU弹降。

  • 自动扩容能力测试

重新开一个shell窗口,上面开启的读写混合压测命令不停止,在新窗口执行压测命令,向集群发起500并发的只读请求。脚本如下:

sysbench /usr/share/sysbench/oltp_read_only.lua --mysql-host=pc-uf6uuoclu007f0399.rwlb.rds.aliyuncs.com --mysql-port=3306 --mysql-user=test_user --mysql-password=Password123 --mysql-db=sbtest --tables=128 --table-size=1000000 --report-interval=1 --range_selects=1 --db-ps-mode=disable --rand-type=uniform --threads=500 --time=12000 run

image.png

从图中可以看到,当数据库接收到新的只读负载后,首先当前的2个只读节点会弹升到最大规格32 PCU,之后Serverless系统会继续创建新的只读节点,直到满足新增只读负载的要求。

  • 自动缩容能力测试

分别在两个shell窗口执行Ctrl+C停止所有的Sysbench脚本(包括oltp_read_write和oltp_read_only),在监控页上,可以看到PolarDB for MySQL Serverless的计算节点首先会自动缩容,之后新增的只读节点会逐步回收。如图:

image.png

等待回收完成后,最终PolarDB会缩容到只有一个主节点的状态。如图:

image.png

通过如上压测,可以直观看到PolarDB for MySQL Serverless可以基于读负载的比例,智能地调整只读节点的个数和各自的规格,来达到最佳的Serverless能力。

全局数据的强一致性

PolarDB for MySQL Serverless实例默认开启严格强一致性集群SCC(Strict Consistency Cluster)服务。SCC功能为PolarDB for MySQL Serverless提供了跨节点无损读扩展的能力。PolarTrans事务系统利用提交时间戳技术CTS和RDMA网络,在内核层面提供集群强一致性读SCC服务,在不损失性能的基础上,保证发往集群任意副本的读请求都可以获得强一致性的结果。

接下来将通过开源的mysqlsct工具,来检验数据库集群的强一致性读能力, 该工具通过跨session的写入+读取+结果对比的方式来测试数据库集群强一致性读的功能和性能。

为了更方便地测试跨节点无损读扩展的能力,先调整Serverless配置,确保测试过程中,至少保留一个只读节点。在设置Serverless配置参数对话框中,将只读节点个数扩展下限从0调整为1,如图:

image.png

等待集群配置切换完成后,在ECS服务器中执行mysqlsct测试命令,脚本如下:

/root/mysqlsct --host-rw=pc-uf6uuoclu007f0399.rwlb.rds.aliyuncs.com --host-ro=pc-uf6uuoclu007f0399.rwlb.rds.aliyuncs.com --port-rw=3306 --port-ro=3306 --user=test_user  --password=Password123 --iterations=100000 --table-cnt=1 --table-size=1000 -f=0 --concurrency=1 --database=sct --sc-gap-us=0 --report-interval=2 --test-mode=sct
#参数说明
--host-rw          MySQL版的集群地址
--host-ro          MySQL版的集群地址
--port-rw          MySQL版的集群地址端口
--port-ro          MySQL版的集群地址端口
--user             MySQL版的集群账号
--password         MySQL版的集群密码
--iterations       测试总次数(一次update+一次select为一次测试)
--table-cnt        测试表数量
--table-size       测试表行数
--concurrency      测试并发线程数
--database         测试数据库
--sc-gap-us        update和select之间的休眠时间, 0表示update后立刻发起查询
--report-interval  打印日志间隔

执行后,可以看到一致性检查全部通过,如图:

image.png

在左侧导航栏中,选择参数配置。单击页面左上角的修改参数按钮,修改loose_innodb_polar_scc参数为OFF,单击提交修改,单击确定,关闭SCC特性。如图:

image.png

完成参数修改后,再次执行mysqlsct测试命令,可以看到一致性检查出现失败。如图:

image.png

从上面的实验可以看出,PolarDB for MySQL Serverless借助高性能全局一致性SCC特性,提供了跨节点无损读扩展的能力。

三、试用总结

  • 强大的弹性计算能力:从上面的体验来看,PolarDB for MySQL Serverless支持快速的资源弹升速度,能在5秒探测窗口内完成弹升,最快1秒钟。同时,它具有强大的伸缩性,可以自动进行纵向扩展(0~32核)和横向扩展(0~8个节点),支持0~256核范围内的伸缩。这种强大的伸缩性还带来了稳定性的优势,PolarDB for MySQL Serverless能够在业务无感的情况下进行纵向扩缩容和横向扩展,确保系统的稳定性和可靠性。此外,PolarDB for MySQL Serverless的资源伸缩颗粒度非常细腻,支持最小0.5PCU颗粒度的资源伸缩,使得资源的分配更加精确。另一个值得一提的特点是PolarDB for MySQL Serverless的自动启停功能。当没有访问需求时,计算资源可以被缩减到0,从而节省成本。而当有访问需求时,资源可以在短短10秒内被唤醒,迅速响应用户需求。
  • 全局数据强一致性:PolarDB for MySQL Serverless还具备全局数据的强一致性能力。无论多少个只读节点,数据都能保持强一致性,而且在保证性能不下降的情况下实现。这种一致性特性对于多节点应用尤为重要。
  • 应用场景广泛:既可以针对需要进行大量数据处理的大数据分析场景,也可以应用在微服务架构中,使得每个服务都可能有独立的数据库需求,帮助企业节省运维成本。

综上,PolarDB MySQL版Serverless是一款具有高度灵活性和扩展性的数据库产品,它结合了云原生数据库的优势和Serverless计算的灵活性,为企业提供了一种全新的数据库解决方案。

四、学习拓展

如你对上述的场景体验还意犹未尽,我这里整理了适合学习拓展的链接,点击即可继续深入学习了解。如下:

  • 官方文档

云原生数据库PolarDB

Serverless_云原生数据库 PolarDB

PolarDB开源

  • 场景体验

PolarDB MySQL从表回收站中恢复误删的表

使用PolarDB和ECS搭建门户网站

PolarDB MySQL全球数据库(GDN)异地多活

PolarDB MySQL自动SQL限流

体验高可用云原生PolarDB MySQL引擎

相关实践学习
【文生图】一键部署Stable Diffusion基于函数计算
本实验教你如何在函数计算FC上从零开始部署Stable Diffusion来进行AI绘画创作,开启AIGC盲盒。函数计算提供一定的免费额度供用户使用。本实验答疑钉钉群:29290019867
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
1月前
|
存储 编解码 运维
函数计算驱动多媒体文件处理评测
函数计算驱动多媒体文件处理评测
31 1
|
13天前
|
消息中间件 关系型数据库 Serverless
函数计算驱动多媒体文件处理解决方案评测
在本次评测中,我有幸体验了函数计算驱动的多媒体文件处理解决方案。
58 28
|
1天前
|
Serverless
解决方案评测|函数计算驱动多媒体文件处理获奖名单公布
解决方案评测|函数计算驱动多媒体文件处理获奖名单公布!!
|
10天前
|
运维 监控 Serverless
评测报告 - 函数计算驱动多媒体文件处理
官方文档为使用函数计算处理多媒体文件提供了详尽的指导,涵盖从创建函数到监控的全流程,并附有多种编程语言的代码示例。尽管文档对初学者友好,但在高级配置、故障排查及API应用等方面仍有提升空间。实际体验中,函数计算表现出色,尤其在高并发场景下,具备自动扩展能力,确保高性能和稳定性,且按使用付费模式有助于降低成本。然而,部署过程中仍需注意环境变量配置、超时设置及依赖管理等问题,部分高级功能需更多技术支持。
32 4
|
1月前
|
关系型数据库 MySQL 分布式数据库
PolarDB MySQL多场景评测
本次评测将围绕指定场景中的灵活弹性和无感秒切展开,对于自选场景中的安全和DB+AI也进行了简单体验。
94 2
PolarDB MySQL多场景评测
|
1月前
|
消息中间件 弹性计算 关系型数据库
函数计算驱动多媒体文件处理解决方案体验评测
从整体解读到部署体验,多方位带你了解如何利用函数计算驱动多媒体文件处理,告别资源瓶颈。
10441 13
|
1月前
|
关系型数据库 MySQL Serverless
PolarDB MySQL Serverless:灵活弹性场景深度评测
本文深入评测了阿里云PolarDB MySQL Serverless的灵活弹性场景。作为阿里云专业运维工程师,笔者从多个角度对产品进行了全面分析: 产品特性:介绍了PolarDB MySQL Serverless的核心优势,包括动态弹性、高可用性和按量付费模式。 操作体验:详细描述了集群创建过程和控制台监控功能,突出了其简化运维的特点。 弹性能力:通过三个测试场景验证了产品在不同负载下的自动扩缩容能力,展示了其快速响应和性能稳定性。 API与文档:评估了API的易用性和文档的完整性,并提出了改进建议。 优劣分析:总结了产品的主要优势,如极致弹性和成本效益,同时指出了一些潜在的改进空间。 整体
|
29天前
|
关系型数据库 MySQL 分布式数据库
PolarDB 并行查询问题之保证与MySQL的兼容性如何解决
PolarDB 并行查询问题之保证与MySQL的兼容性如何解决
15 1
|
30天前
|
Serverless
解决方案评测|《Serverless高可用架构》获奖名单
解决方案评测|《Serverless高可用架构》获奖名单正式公布!!
141 1
|
1月前
|
存储 关系型数据库 MySQL
再探PolarDB —— PolarDB MySQL 四大场景下的全方位评测
本文全面评测了阿里云PolarDB MySQL在四大关键场景下的表现:Serverless极致弹性、列存索引(IMCI)、弹性并行查询(ePQ)以及无感秒切高可用。通过官方提供的免费体验资源,我们深入了解了PolarDB MySQL的核心能力和性能。Serverless极致弹性列存索引(IMCI弹性并行查询(ePQ)无感秒切高可用此外,文章还介绍了PolarDB MySQL在数据备份和HTAP(混合事务/分析处理)场景下的优势,包括灵活的备份策略、高效的全量和库表恢复方式,以及通过IMCI支持的HTAP能力。这些特性共同构成了PolarDB MySQL作为一款先进的云数据库服务的强大竞争力。

相关产品

  • 云原生数据库 PolarDB