Serverless数据库上手体验之云原生数据库 PolarDB MySQL 版

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
函数计算FC,每月免费额度15元,12个月
简介: 云原生数据库 PolarDB MySQL 版是阿里云自研产品,100%兼容 MySQL。PolarDB产品具有多主多写、多活容灾、HTAP 等特性,交易性能最高可达开源数据库的6倍,分析性能最高可达开源数据库的400倍,TCO 低于自建数据库50%。本文对该数据库的相关使用做了细致的体验说明。

前言

Serverless数据库是随着Serverless架构的发展而兴起的一种数据库服务模式,它将数据库的部署、运维、扩展等工作交给云服务商来完成,用户只需关注数据库的使用即可。


Serverless数据库具有以下优势:

  • 高弹性:Serverless数据库可以根据业务需求进行弹性伸缩,在业务高峰时自动扩容,在业务低谷时自动缩容,帮助用户降低成本。
  • 低成本:Serverless数据库采用按需付费的模式,用户只需为实际使用的资源付费,可以帮助用户节省数据库的成本。
  • 易用性:Serverless数据库的部署、运维等工作都由云服务商来完成,用户只需关注数据库的使用即可,降低了数据库的使用门槛。

随着Serverless架构的不断发展,Serverless数据库将会更加普及,其优势也将更加明显。未来,Serverless数据库将在以下几个方面继续发展:

  • 支持更多数据库类型:目前,Serverless数据库主要支持关系型数据库,未来将会支持NoSQL数据库、时序数据库等更多数据库类型。
  • 提供更细粒度的资源伸缩:目前,Serverless数据库的资源伸缩颗粒度相对较大,未来将会提供更细粒度的资源伸缩,满足不同业务场景的需求。
  • 支持更灵活的资源伸缩策略:目前,Serverless数据库的资源伸缩策略相对较为简单,未来将会支持更灵活的资源伸缩策略,满足不同业务需求。


正如阿里云的官方文档中上图,对于Serverless数据库与普通数据库在资源使用对比图描述的情况,我们可以看到Serverless数据库集群的强大生命力。


PolarDB MySQL版Serverless提供了CPU、内存、存储、网络资源的实时弹性能力,构建计算与存储分离架构下的PolarDB MySQL版产品新形态。Serverless不仅提供网络资源、命名空间、存储空间的垂直资源隔离能力,还提供计算存储资源按需计费的能力,具有资源用量低、简单易用、弹性灵活和价格低廉等优点,赋能用户面向业务峰谷时对计算、存储能力进行快速且独立的扩缩要求,做到快速响应业务变化的同时,合理优化使用成本,进一步助力企业降本增效。


PolarDB 数据库的成长史


Polar数据库是阿里云自研的云原生关系型数据库。


Polar数据库采用了云原生架构,具有高性能、高可用、高扩展性等特点。


Polar数据库的发展可以分为以下几个阶段:

  • 2020年:Polar数据库正式发布,支持MySQL协议,提供单机、双机高可用、多活容灾等部署模式。
  • 2021年:Polar数据库支持HTAP(混合事务分析处理)能力,可以满足OLTP和OLAP的双重需求。
  • 2022年:Polar数据库推出Serverless版本,可以根据业务需求进行弹性伸缩,帮助用户降低成本。


Polar数据库相对普通数据库的优势

Polar数据库相对于普通数据库具有以下优势:

  • 高性能:Polar数据库采用了云原生架构,具有高性能、高可用、高扩展性等特点。在测试中,Polar数据库的性能与传统数据库相比基本无差异。
  • 低成本:Polar数据库采用了按需付费的模式,可以根据业务需求进行资源伸缩,帮助用户降低成本。
  • 易用性:Polar数据库提供了简单易用的管理界面,可以帮助用户快速部署和管理数据库。


PolarDB MySQL版与普通的MySQL数据库有哪些异同

PolarDB MySQL版与普通的MySQL数据库在以下方面存在异同:

异同

  • 相同点
  • 兼容MySQL协议,可以使用MySQL的所有常用功能和命令。
  • 支持MySQL的生态系统,可以与MySQL的第三方工具和应用程序无缝集成。
  • 不同点
  • 架构:PolarDB MySQL版采用了云原生架构,具有高性能、高可用、高扩展性等特点。
  • 性能:PolarDB MySQL版的性能与传统数据库相比基本无差异。
  • 成本:PolarDB MySQL版采用了按需付费的模式,可以根据业务需求进行资源伸缩,帮助用户降低成本。

具体的异同

  • 架构
  • PolarDB MySQL版采用了云原生架构,将数据库的部署、运维、扩展等工作交给云服务商来完成,用户只需关注数据库的使用即可。
  • 传统的MySQL数据库由用户自行部署、运维,需要用户具备一定的数据库管理能力。
  • 性能
  • PolarDB MySQL版采用了云原生架构,可以充分利用云计算的资源优势,提升数据库的性能。
  • 传统的MySQL数据库的性能受限于用户的硬件资源,难以满足高并发、大数据量的业务需求。
  • 成本
  • PolarDB MySQL版采用了按需付费的模式,用户只需为实际使用的资源付费,可以帮助用户节省数据库的成本。
  • 传统的MySQL数据库采用了预付费的模式,用户需要提前购买固定数量的资源,即使实际使用量不足,也需要支付全额费用。


当我们明白了,这款产品的价值之后,我们对其进行详细的体验。


PolarDB MySQL版本


image.png


MySQL 5.7版本和MySQL 8版本是目前最常见的MySQL版本:

  • 兼容性:MySQL 5.7版本和MySQL 8版本与之前的MySQL版本兼容性良好,用户可以无缝迁移现有应用。
  • 稳定性:MySQL 5.7版本和MySQL 8版本经过了长期的测试和验证,具有良好的稳定性。
  • 功能:MySQL 5.7版本和MySQL 8版本提供了丰富的功能,满足用户的各种需求。

具体来说,MySQL 5.7版本是MySQL的长期支持版本,于2013年发布,将于2023年10月31日停止支持。

MySQL 8版本是MySQL的最新版本,于2018年发布,具有许多新特性和改进,例如:

  • InnoDB存储引擎的改进
  • JSON数据类型的支持
  • 流式查询的支持
  • 多主复制模式的支持

因此,MySQL 5.7版本和MySQL 8版本是目前最合适的MySQL版本。


以下是一些查询的资料显示的具体的数据,可以辅助说明MySQL 5.7版本和MySQL 8版本的普及程度:

  • 在Stack Overflow的2023年开发者调查中,MySQL是使用最广泛的数据库,其中MySQL 5.7版本占比37.7%,MySQL 8版本占比26.8%。
  • 根据W3Techs的数据,在2023年12月,使用MySQL的数据库网站中,MySQL 5.7版本占比45.5%,MySQL 8版本占比31.9%。


PolarDB 紧紧地围绕MySQL的最稳定版本,同时支持小版本的兼容,可以让用户无感的快速迁入使用。


在购买PolarDB 数据库时,体现了Serverless数据库的优势,可以按需,选择相应的配置,不至于资源浪费,有效的控制成本。


开通后,由独立的域名(https://polardb.console.aliyun.com/overview)进行资源访问,这块建议可以融合下,在阿里云资源看板,放置快捷入口。


image.png


对于其官方文档(https://help.aliyun.com/zh/polardb/polardb-for-mysql/?spm=a2c4g.11186623.0.0.58f67f32yp56t5),信息比较丰富,但是个人感觉,缺失了PolarDB 数据库与MySQL的对比。对于PolarDB 来讲,同时也有分布式版、PostgreSQL版等,又有什么样的异同,用户如何快速选择。可以增加更多的指引性信息。


Serverless数据库 PolarDB

image.png

点击集群ID实例,进行集群详情。当前集群详情,采用了一主一从两个数据库节点,资源伸缩广度上,PolarDB支持自动纵向扩展(0~32核)和横向扩展(0~8个节点),支持0~256核范围内伸缩;资源伸缩的颗粒度,PolarDB支持最小0.5PCU颗粒度的资源伸缩


image.png

PolarDB 以计算能力(PCU)定价,真正做到按量付费,帮助客户节省成本。成本下降最高可达80%。用户在使用时使用Serverless的弹性配置进行灵活选择资源大小。


tips:PCU(处理器核心单元)是一种用于衡量容器资源消耗的单位。PCU(PolarDB Capacity Unit):1个PCU的性能约等于1核2GB规格的PolarDB计算节点性能。


image.png


点击Serverless配置按钮,进行集群的Serverless参数配置


image.png


支持上文说的灵活的资源伸缩。


image.png


开启无活动暂停,可以配置检测时长,当在时长范围内,服务无访问需要,服务可将资源置为0,保证不浪费资源。


image.png


资源弹升速度非常优秀,迅速的完成的资源的伸缩


主节点Serverless弹性压测

点击Serverless配置按钮,调整配置为下图所示:

image.png

模拟客户端对PolarDB发起写请求,验证主节点的Serverless智能弹性能力。

通过Sysbench脚本访问集群地址进行压测,PolarDB主节点的规格能够根据负载进行自动伸缩与自动配置,达到Serverless的能力。


tips: Sysbench是一款开源的多线程性能测试工具,可以执行数据库只读、只写、读写混合等类型的性能测试。


连接控制台,执行性能测试工具命令,


初始化数据代码如下:


sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-host=pc-uf6qu5ij9wp2ruyfg.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

执行读写混合的压测类型(oltp_read_write),并发数为32线程。创建128张表,然后分别插入1000000条记录


正式压力测试,代码如下:

sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-host=pc-uf6qu5ij9wp2ruyfg.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

随着时间的推移,在同样的并发数下,tps逐渐上升,延迟(lat)逐渐下降,最终到达一个稳定值,这说明PolarDB的处理能力借助Serverless弹性获得提升。


image.png

在控制台集群实例详情内点击性能监控,会看到我们压测的结果,说明了PolarDB的弹性伸缩的能力。

只读节点Serverless弹性压测

PolarDB for MySQL Serverless集群除了支持主节点自动弹性伸缩之外,还支持创建只读节点分摊主节点的读请求。当使用集群地址时,PolarDB for MySQL Serverless可以基于读负载的比例,智能地调整只读节点的个数和各自的规格,来达到最佳的Serverless能力。


PolarDB for MySQL Serverless集群主节点PCU扩容到弹升上限后,会自动创建新的只读节点并分摊部分主节点的读负载,最终使整个集群能够支撑更高的TPS请求量。


场景一:读写混合压测

image.png

调整参数配置,用于后续的测试。


继续使用压测工具,执行以下代码:


sysbench /usr/share/sysbench/oltp_read_write.lua --mysql-host=pc-uf6qu5ij9wp2ruyfg.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


效果很明显,和上一节测试类似,从Sysbench输出可以直接观察到,随着时间的推移,在同样的并发数下,tps逐渐上升,延迟(lat)逐渐下降,最终到达一个稳定值。这说明PolarDB的处理能力借助Serverless弹性获得提升。


image.png


同样,我们回到性能监控页面,能够看到

image.png


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


场景二:只读并发压测


(一)自动扩容能力测试

执行代码

sysbench /usr/share/sysbench/oltp_read_only.lua --mysql-host=pc-uf6qu5ij9wp2ruyfg.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

可以看到节点自动增加


image.png


性能监控处,也验证了资源的相关变化


(二)自动缩容能力测试


当执行脚本停止后,节点会自动缩容


全局数据强一致性

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


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


重新进行serverless参数配置,调整为只读上限7下限1,如下图所示:



执行代码命令

/root/mysqlsct --host-rw=pc-uf6qu5ij9wp2ruyfg.rwlb.rds.aliyuncs.com --host-ro=pc-uf6qu5ij9wp2ruyfg.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

执行后,可以看到一致性检查全部通过,输出的信息如下截图:

image.png


回到控制台,改变参数配置,关闭SCC能力

image.png

等待修改完成

image.png

重新执行测试命令,此时将出现错误

image.png

PolarDB for MySQL Serverless借助高性能全局一致性SCC特性,提供了跨节点无损读扩展的能力。


总结

  • 资源弹升速度

PolarDB Serverless的资源弹升速度非常快,从0核到32核,探测窗口5秒,弹升时间约为1秒。

  • 资源伸缩广度

PolarDB Serverless支持自动纵向扩展(0~32核)和横向扩展(0~8个节点),支持0~256核范围内伸缩。

  • 资源伸缩的稳定性

PolarDB Serverless支持对业务无感的纵向扩缩容与横向扩展,在测试中,在进行资源扩展或缩减时,业务均没有受到影响。

  • 资源伸缩的颗粒度

PolarDB Serverless支持最小0.5PCU颗粒度的资源伸缩,可以满足不同业务场景下的资源需求。

  • 可支持自动启停

PolarDB Serverless可支持在没有访问需求时,计算资源可缩为0。当有访问需求时,10秒即可唤醒资源。

  • 全局数据的强一致性

PolarDB Serverless可支持所有只读节点的数据强一致性,并且性能不下降。

与同类型产品对比

PolarDB Serverless与同类型产品相比,在资源弹升速度、资源伸缩广度、资源伸缩的稳定性、资源伸缩的颗粒度、可支持自动启停等方面均具有优势。

  • 资源弹升速度

PolarDB Serverless的资源弹升速度最快,可以满足突发流量的需求。

  • 资源伸缩广度

PolarDB Serverless支持0~256核范围内的伸缩,可以满足不同业务场景下的资源需求。

  • 资源伸缩的稳定性

PolarDB Serverless支持对业务无感的资源伸缩,可以保障业务的连续性。

  • 资源伸缩的颗粒度

PolarDB Serverless支持最小0.5PCU颗粒度的资源伸缩,可以满足不同业务场景下的资源需求。

  • 可支持自动启停

PolarDB Serverless可支持在没有访问需求时,计算资源可缩为0,可以帮助用户降低成本。

反馈与建议

总体而言,PolarDB Serverless的Serverless能力非常优秀,在资源弹升速度、资源伸缩广度、资源伸缩的稳定性、资源伸缩的颗粒度、可支持自动启停等方面均具有优势。


对于PolarDB Serverless,我有以下反馈与建议:

  • 可以提供更多细粒度的资源伸缩颗粒度

目前,PolarDB Serverless支持的最小资源伸缩颗粒度为0.5PCU,可以满足大多数业务场景的需求。但是,对于一些对性能要求很高的业务场景,可能需要更细粒度的资源伸缩颗粒度。

  • 可以提供更灵活的资源伸缩策略

目前,PolarDB Serverless提供的资源伸缩策略相对比较简单,仅支持根据CPU使用率来进行伸缩。可以考虑提供更灵活的资源伸缩策略,例如根据业务流量、业务指标等来进行伸缩。


PolarDB Serverless的优势

PolarDB Serverless的优势主要体现在以下几个方面:

  • 高性能

PolarDB Serverless采用了云原生架构,具有高性能、高可用、高扩展性等特点。在测试中,PolarDB Serverless的性能与传统数据库相比基本无差异。

  • 低成本

PolarDB Serverless采用了按需付费的模式,可以根据业务需求进行资源伸缩,帮助用户降低成本。

  • 易用性

PolarDB Serverless提供了简单易用的管理界面,可以帮助用户快速部署和管理数据库。


PolarDB Serverless的应用场景

PolarDB Serverless适用于以下场景:

  • 对性能要求较高的业务场景,例如电商、金融、游戏等。
  • 对成本敏感的业务场景,例如中小企业、创业公司等。
  • 对弹性需求较高的业务场景,例如突发流量、季节性业务等。

PolarDB Serverless的未来发展

PolarDB Serverless是阿里云云原生数据库的最新产品,具有很大的发展潜力。未来,PolarDB Serverless有望在以下几个方面进行改进和完善:

  • 提供更细粒度的资源伸缩颗粒度,满足不同业务场景的需求。
  • 提供更灵活的资源伸缩策略,满足不同业务需求。
  • 支持更多数据库类型,满足不同用户的需求。
相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
目录
相关文章
|
5天前
|
存储 关系型数据库 MySQL
MySQL——数据库备份上传到阿里云OSS存储
MySQL——数据库备份上传到阿里云OSS存储
20 0
|
7天前
|
关系型数据库 Serverless 分布式数据库
揭秘PolarDB Serverless:大促洪峰秒级应对,无感伸缩见证科技魔法!一探云数据库管理的颠覆性革新,强一致性的守护神来了!
【8月更文挑战第13天】在云计算背景下,阿里巴巴的云原生数据库PolarDB Serverless针对弹性伸缩与高性能一致性提供了出色解决方案。本文通过一个电商平台大促活动的真实案例全面测评PolarDB Serverless的表现。面对激增流量,PolarDB Serverless能秒级自动扩展资源,如通过调用`pd_add_reader`快速增加读节点分摊压力;其无感伸缩确保服务平滑运行,不因扩展中断;强一致性模型则保障了数据准确性,即便在高并发写操作下也确保库存等数据的同步一致性。PolarDB Serverless简化了数据库管理,提升了系统效能,是追求高效云数据库管理企业的理想选择。
35 7
|
4天前
|
关系型数据库 MySQL Serverless
在部署云数据库PolarDB MySQL版 Serverless集群的过程中问题点
在部署PolarDB MySQL Serverless过程中,常见问题包括配置误解、网络配置错误、资源未及时释放及压测不熟练。建议深入理解配置项,确保合理设置伸缩策略;明确业务需求,使PolarDB与现有服务同处一地域与VPC;利用提醒功能管理资源生命周期;按官方指南执行压测。新用户面临的学习曲线、资源管理自动化不足及成本控制难题,可通过增强文档友好性、引入智能成本管理与用户界面优化来改善。
18 1
|
5天前
|
缓存 NoSQL Redis
一天五道Java面试题----第九天(简述MySQL中索引类型对数据库的性能的影响--------->缓存雪崩、缓存穿透、缓存击穿)
这篇文章是关于Java面试中可能会遇到的五个问题,包括MySQL索引类型及其对数据库性能的影响、Redis的RDB和AOF持久化机制、Redis的过期键删除策略、Redis的单线程模型为何高效,以及缓存雪崩、缓存穿透和缓存击穿的概念及其解决方案。
|
3天前
|
关系型数据库 MySQL 数据库
探究数据库开源协议:PostgreSQL vs MySQL
探究数据库开源协议:PostgreSQL vs MySQL
|
4天前
|
SQL 关系型数据库 MySQL
如何在 MySQL 或 MariaDB 中导入和导出数据库
如何在 MySQL 或 MariaDB 中导入和导出数据库
16 0
|
4天前
|
安全 关系型数据库 MySQL
如何在 MySQL 中导入和导出数据库以及重置 root 密码
如何在 MySQL 中导入和导出数据库以及重置 root 密码
14 0
|
4天前
|
SQL Ubuntu 关系型数据库
如何在云服务器上创建和管理 MySQL 和 MariaDB 数据库
如何在云服务器上创建和管理 MySQL 和 MariaDB 数据库
8 0
|
5天前
|
SQL 关系型数据库 MySQL
MySql⭐一、配置MySql数据库,并创建一个表单
MySql⭐一、配置MySql数据库,并创建一个表单
|
6天前
|
关系型数据库 MySQL 数据库
设置MySQL 创建数据库,默认为UTF-8
设置MySQL 创建数据库,默认为UTF-8
8 0

热门文章

最新文章

相关产品

  • 函数计算