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 架构模式
目录
相关文章
|
2月前
|
人工智能 Serverless
《触手可及,函数计算玩转 AI 大模型》体验评测
《触手可及,函数计算玩转 AI 大模型》体验评测
|
2月前
|
关系型数据库 MySQL Serverless
探索PolarDB MySQL版:Serverless数据库的灵活性与性能
本文介绍了个人开发者对阿里云PolarDB MySQL版,特别是其Serverless特性的详细评测体验。评测涵盖了产品初体验、性能观测、Serverless特性深度评测及成本效益分析等方面。尽管试用过程中遇到一些小问题,但总体而言,PolarDB MySQL版表现出色,提供了高性能、高可用性和灵活的资源管理,是个人开发者和企业用户的优秀选择。
|
17天前
|
人工智能 弹性计算 运维
触手可及:阿里云函数计算助力AI大模型的评测
阿里云推出的面向AI服务器的功能计算(Functional Computing, FC),专为AI应用提供弹性计算资源。该服务支持无服务器部署、自动资源管理和多语言支持,极大简化了AI应用的开发和维护。本文全面评测了FC for AI Server的功能特性、使用体验和成本效益,展示了其在高效部署、成本控制和安全性方面的优势,并通过具体应用案例和改进建议,展望了其未来发展方向。
90 4
|
16天前
|
人工智能 弹性计算 运维
《触手可及,函数计算玩转 AI 大模型》解决方案深度评测
本次评测全面评估了《触手可及,函数计算玩转 AI 大模型》解决方案,涵盖实践原理理解、文档清晰度、部署体验、优势展现及生产环境适用性。方案通过函数计算实现AI大模型的高效部署,但模型加载、性能指标和示例代码等方面需进一步细化。文档需增加步骤细化、FAQ、性能指标和示例代码,以提升用户体验。部署体验方面,建议明确依赖库、权限配置和配置文件模板。优势展现方面,建议增加性能对比、案例研究和成本分析。此外,为满足实际生产需求,建议增强高可用性、监控与日志、安全性和扩展性。
28 2
|
17天前
|
人工智能 弹性计算 自然语言处理
《触手可及,函数计算玩转 AI 大模型》解决方案体验与部署评测
在AI技术快速发展的背景下,大模型正推动各行业的智能化转型。企业为抓住机遇,纷纷寻求部署AI大模型以满足特定业务需求。阿里云函数计算凭借按量付费、卓越弹性和快速交付等优势,为企业提供了高效、安全的AI大模型部署方案。本文将详细介绍阿里云函数计算的技术解决方案及其在文生文、图像生成和语音生成等领域的应用实例,展示其在降低成本、提高效率和增强灵活性方面的显著优势。
|
2月前
|
人工智能 弹性计算 运维
评测报告:《触手可及,函数计算玩转 AI 大模型》解决方案
本次评测聚焦于《触手可及,函数计算玩转 AI 大模型》这一解决方案。该方案旨在通过云上的函数计算服务来简化AI大模型的部署过程,使得用户可以更加便捷地利用这些强大的AI能力。本报告将从实践原理的理解、部署体验、优势展现以及实际应用等四个方面进行综合评估。
58 15
|
30天前
|
人工智能 Serverless 文件存储
《触手可及,函数计算玩转 AI 大模型》解决方案评测报告
该解决方案介绍如何利用阿里云函数计算快速部署AI大模型,通过无服务器架构、文件存储NAS和专有网络VPC实现模型持久化存储与私有网络访问。尽管整体描述清晰,但在技术细节上仍有待完善,建议增加架构图帮助理解。阿里云提供了详尽的部署文档,涵盖从选择模板到调用验证的全过程,适合新手用户。但在VPC和NAS配置上需更多示例指导,并优化报错信息提示。此方案展示了函数计算在降低成本、提升弹性和加速交付方面的优势,但可通过具体性能指标和案例进一步强化。适用于快速探索AI大模型效果、缺乏GPU资源的开发者及希望简化技术门槛的企业。未来版本应在细节描述和优势量化上继续优化。
|
2月前
|
消息中间件 关系型数据库 Serverless
函数计算驱动多媒体文件处理解决方案评测
在本次评测中,我有幸体验了函数计算驱动的多媒体文件处理解决方案。
70 28
|
2月前
|
人工智能 运维 大数据
阿里云“触手可及,函数计算玩转 AI 大模型”解决方案评测报告
阿里云“触手可及,函数计算玩转 AI 大模型”解决方案评测报告
84 2
|
2月前
|
Serverless
解决方案评测|函数计算驱动多媒体文件处理获奖名单公布
解决方案评测|函数计算驱动多媒体文件处理获奖名单公布!!

相关产品

  • 云原生数据库 PolarDB