PolarDB MySQL 版 Serverless评测

简介: 对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引擎

相关实践学习
函数计算部署PuLID for FLUX人像写真实现智能换颜效果
只需一张图片,生成程序员专属写真!本次实验在函数计算中内置PuLID for FLUX,您可以通过函数计算+Serverless应用中心一键部署Flux模型,快速体验超写实图像生成的魅力。
从 0 入门函数计算
在函数计算的架构中,开发者只需要编写业务代码,并监控业务运行情况就可以了。这将开发者从繁重的运维工作中解放出来,将精力投入到更有意义的开发任务上。
目录
相关文章
|
9月前
|
关系型数据库 MySQL 分布式数据库
安全可靠的PolarDB V2.0 (兼容MySQL)产品能力及应用场景
PolarDB分布式轻量版采用软件输出方式,能够部署在您的自主环境中。PolarDB分布式轻量版保留并承载了云原生数据库PolarDB分布式版技术团队深厚的内核优化成果,在保持高性能的同时,显著降低成本。
704 140
|
7月前
|
Cloud Native 关系型数据库 MySQL
免费体验!高效实现自建 MySQL 数据库平滑迁移至 PolarDB-X
PolarDB-X 是阿里云推出的云原生分布式数据库,支持PB级存储扩展、高并发访问与数据强一致,助力企业实现MySQL平滑迁移。现已开放免费体验,点击即享高效、稳定的数据库升级方案。
免费体验!高效实现自建 MySQL 数据库平滑迁移至 PolarDB-X
|
7月前
|
关系型数据库 MySQL 分布式数据库
阿里云PolarDB云原生数据库收费价格:MySQL和PostgreSQL详细介绍
阿里云PolarDB兼容MySQL、PostgreSQL及Oracle语法,支持集中式与分布式架构。标准版2核4G年费1116元起,企业版最高性能达4核16G,支持HTAP与多级高可用,广泛应用于金融、政务、互联网等领域,TCO成本降低50%。
|
10月前
|
关系型数据库 MySQL 分布式数据库
Super MySQL|揭秘PolarDB全异步执行架构,高并发场景性能利器
阿里云瑶池旗下的云原生数据库PolarDB MySQL版设计了基于协程的全异步执行架构,实现鉴权、事务提交、锁等待等核心逻辑的异步化执行,这是业界首个真正意义上实现全异步执行架构的MySQL数据库产品,显著提升了PolarDB MySQL的高并发处理能力,其中通用写入性能提升超过70%,长尾延迟降低60%以上。
|
人工智能 关系型数据库 分布式数据库
100%兼容MySQL!手把手教你基于PolarDB搭建RAG系统
100%兼容MySQL!手把手教你基于PolarDB搭建RAG系统
783 0
|
SQL JSON 关系型数据库
MySQL是一个广泛使用的开源关系型数据库管理系统,它有许多不同的版本
【10月更文挑战第3天】MySQL是一个广泛使用的开源关系型数据库管理系统,它有许多不同的版本
740 5
|
资源调度 关系型数据库 MySQL
PolarDB MySQL场景评测
PolarDB具备快速资源弹升能力,支持5秒探测窗口和1秒内完成资源扩展,适合电商促销和流量波动型SaaS应用。资源伸缩范围广泛,支持0-256核,适用于中小型企业到大型企业。资源伸缩过程中业务无感知,具有高稳定性和成熟性。支持最小0.5 PCU的资源颗粒度,确保成本控制和使用效率。此外,PolarDB支持所有只读节点的数据强一致性,性能不受影响。
205 0
|
关系型数据库 MySQL 数据库
mysql关系型数据库的学习
mysql关系型数据库的学习
195 0
|
6月前
|
人工智能 运维 Kubernetes
Serverless 应用引擎 SAE:为传统应用托底,为 AI 创新加速
在容器技术持续演进与 AI 全面爆发的当下,企业既要稳健托管传统业务,又要高效落地 AI 创新,如何在复杂的基础设施与频繁的版本变化中保持敏捷、稳定与低成本,成了所有技术团队的共同挑战。阿里云 Serverless 应用引擎(SAE)正是为应对这一时代挑战而生的破局者,SAE 以“免运维、强稳定、极致降本”为核心,通过一站式的应用级托管能力,同时支撑传统应用与 AI 应用,让企业把更多精力投入到业务创新。
677 30
|
7月前
|
存储 人工智能 Serverless
函数计算进化之路:AI 应用运行时的状态剖析
AI应用正从“请求-响应”迈向“对话式智能体”,推动Serverless架构向“会话原生”演进。阿里云函数计算引领云上 AI 应用 Serverless 运行时技术创新,实现性能、隔离与成本平衡,开启Serverless AI新范式。
704 14

相关产品

  • 云原生数据库 PolarDB
  • 推荐镜像

    更多