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月前
|
关系型数据库 MySQL Serverless
探索PolarDB MySQL版:Serverless数据库的灵活性与性能
本文介绍了个人开发者对阿里云PolarDB MySQL版,特别是其Serverless特性的详细评测体验。评测涵盖了产品初体验、性能观测、Serverless特性深度评测及成本效益分析等方面。尽管试用过程中遇到一些小问题,但总体而言,PolarDB MySQL版表现出色,提供了高性能、高可用性和灵活的资源管理,是个人开发者和企业用户的优秀选择。
|
3月前
|
关系型数据库 Serverless 分布式数据库
ICDE’24 | 中国企业首获最佳论文,详解PolarDB Serverless如何在0.5秒内实现跨机迁移
数据库领域顶会 ICDE 2024于5月13-17日在荷兰乌特勒支(Utrecht, Netherlands)举办。ICDE (The International Conference on Data Engineering) 与VLDB、SIGMOD被公认为是国际数据管理领域三大顶级学术会议,此次在荷兰召开的ICDE 2024大会,共吸引北京大学、清华大学、浙江大学、MIT、斯坦福等机构,以及谷歌、微软、阿里云、华为、字节等公司的近1000名人员参会,共同探讨AI、数据库、数据处理领域的前沿技术问题。
|
3月前
|
关系型数据库 MySQL Serverless
PolarDB MySQL Serverless:灵活弹性场景深度评测
本文深入评测了阿里云PolarDB MySQL Serverless的灵活弹性场景。作为阿里云专业运维工程师,笔者从多个角度对产品进行了全面分析: 产品特性:介绍了PolarDB MySQL Serverless的核心优势,包括动态弹性、高可用性和按量付费模式。 操作体验:详细描述了集群创建过程和控制台监控功能,突出了其简化运维的特点。 弹性能力:通过三个测试场景验证了产品在不同负载下的自动扩缩容能力,展示了其快速响应和性能稳定性。 API与文档:评估了API的易用性和文档的完整性,并提出了改进建议。 优劣分析:总结了产品的主要优势,如极致弹性和成本效益,同时指出了一些潜在的改进空间。 整体
|
3月前
|
关系型数据库 MySQL 分布式数据库
PolarDB 并行查询问题之保证与MySQL的兼容性如何解决
PolarDB 并行查询问题之保证与MySQL的兼容性如何解决
43 1
|
3月前
|
关系型数据库 Serverless 分布式数据库
揭秘PolarDB Serverless:大促洪峰秒级应对,无感伸缩见证科技魔法!一探云数据库管理的颠覆性革新,强一致性的守护神来了!
【8月更文挑战第13天】在云计算背景下,阿里巴巴的云原生数据库PolarDB Serverless针对弹性伸缩与高性能一致性提供了出色解决方案。本文通过一个电商平台大促活动的真实案例全面测评PolarDB Serverless的表现。面对激增流量,PolarDB Serverless能秒级自动扩展资源,如通过调用`pd_add_reader`快速增加读节点分摊压力;其无感伸缩确保服务平滑运行,不因扩展中断;强一致性模型则保障了数据准确性,即便在高并发写操作下也确保库存等数据的同步一致性。PolarDB Serverless简化了数据库管理,提升了系统效能,是追求高效云数据库管理企业的理想选择。
100 7
|
3月前
|
关系型数据库 MySQL Serverless
在部署云数据库PolarDB MySQL版 Serverless集群的过程中问题点
在部署PolarDB MySQL Serverless过程中,常见问题包括配置误解、网络配置错误、资源未及时释放及压测不熟练。建议深入理解配置项,确保合理设置伸缩策略;明确业务需求,使PolarDB与现有服务同处一地域与VPC;利用提醒功能管理资源生命周期;按官方指南执行压测。新用户面临的学习曲线、资源管理自动化不足及成本控制难题,可通过增强文档友好性、引入智能成本管理与用户界面优化来改善。
63 1
|
3月前
|
关系型数据库 MySQL 分布式数据库
云原生数据库PolarDB MySQL版深度评测报告
作为一名开发人员,在日常工作中频繁与数据库打交道,对于数据库的性能、灵活性和易用性有着极高的要求。此次,我有幸对阿里云自主研发的云原生数据库PolarDB MySQL版进行了深入评测,旨在了解其是否能够满足现代应用的高性能、高可用性和弹性扩展需求。
87 4
|
3月前
|
安全 关系型数据库 MySQL
揭秘:如何在无影的Serverless世界中,悄无声息地操控MySQL数据库!
【8月更文挑战第8天】在云计算领域,Serverless 枟能凭借其高效与弹性特性脱颖而出。本文采用问答形式解析函数计算环境中 MySQL 数据库的安全高效访问方法。介绍了如何利用数据库插件或 SDK 连接 MySQL,并提供了一个使用 Python 和 `pymysql` 在阿里云函数计算中连接 MySQL 的示例代码片段。同时强调了通过环境变量或密钥管理服务安全处理数据库凭证的重要性。随着 Serverless 技术的发展,数据库操作将更加简便。
75 7
|
4月前
|
关系型数据库 MySQL 分布式数据库
PolarDB产品使用问题之使用polardb for mysql数据库的外网地址在程序中连接经常超时,如何解决
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
运维 关系型数据库 MySQL
PolarDB产品使用问题之PolarDB MySQL版和PolarDB-X的区别是什么
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。

相关产品

  • 云原生数据库 PolarDB