PolarDB MySQL 版 Serverless评测

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介: 对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引擎

相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
1天前
|
关系型数据库 MySQL 测试技术
数据库专家带你体验PolarDB MySQL版 Serverless的极致弹性特性!
本次基于阿里云瑶池数据库解决方案体验馆,带你体验PolarDB MySQL Serverless形态下的性能压测环境,基于可选择的标准压测工具进行压测,构造弹性场景进行压测,实时动态展示弹性能力、价格和性价比结果,压测环境可开放定制修改、可重复验证。参与活动即有机会获得鼠标、小米打印机、卫衣等精美礼品。
数据库专家带你体验PolarDB MySQL版 Serverless的极致弹性特性!
|
2天前
|
关系型数据库 MySQL 测试技术
数据库专家带你体验PolarDB MySQL版 Serverless的极致弹性特性
本次基于阿里云瑶池数据库解决方案体验馆,带你体验PolarDB MySQL Serverless形态下的性能压测环境,基于可选择的标准压测工具进行压测,构造弹性场景进行压测,实时动态展示弹性能力、价格和性价比结果,压测环境可开放定制修改、可重复验证。参与活动即有机会获得鼠标、小米打印机、卫衣等精美礼品。
|
7天前
|
关系型数据库 MySQL 分布式数据库
PolarDB for MySQL数据库外网连接解析失败的原因
【2月更文挑战第5天】PolarDB for MySQL数据库外网连接解析失败的原因
52 8
|
3天前
|
关系型数据库 分布式数据库 数据库
阿里云PolarDB登顶2024中国数据库流行榜:技术实力与开发者影响力
近日,阿里云旗下的自研云原生数据库PolarDB在2024年中国数据库流行度排行榜中夺冠,并刷新了榜单总分纪录,这一成就引起了技术圈的广泛关注。这一成就源于PolarDB在数据库技术上的突破与创新,以及对开发者和用户的实际需求的深入了解体会。那么本文就来分享一下关于数据库流行度排行榜的影响力以及对数据库选型的影响,讨论PolarDB登顶的关键因素,以及PolarDB“三层分离”新版本对开发者使用数据库的影响。
19 3
阿里云PolarDB登顶2024中国数据库流行榜:技术实力与开发者影响力
|
1月前
|
关系型数据库 分布式数据库 数据库
阿里云瑶池数据库训练营权益:PolarDB开发者大会主题资料开放下载!
阿里云瑶池数据库训练营权益:PolarDB开发者大会主题资料开放下载!
|
2月前
|
存储 DataWorks 监控
DataWorks,一个 polar db 有上万个数据库,解决方案
DataWorks,一个 polar db 有上万个数据库,解决方案
|
2天前
|
Cloud Native 关系型数据库 分布式数据库
热烈祝贺阿里云PolarDB登顶2024最新一期中国数据库流行榜
【2月更文挑战第3天】热烈祝贺阿里云PolarDB登顶2024最新一期中国数据库流行榜
|
9天前
|
Cloud Native 关系型数据库 分布式数据库
推荐你使用数据库排行榜第一的PolarDB
数据库大家都使用的,才是最好的,有足够多的案例和样本。
32798 15
|
9天前
|
SQL 关系型数据库 分布式数据库
|
24天前
|
SQL 存储 关系型数据库
MySQL技能完整学习列表——1、数据库基础概念——1、关系型数据库(Relational Database)
MySQL技能完整学习列表——1、数据库基础概念——1、关系型数据库(Relational Database)
133 0

相关产品

  • 云原生数据库 PolarDB