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

本文涉及的产品
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
函数计算FC,每月15万CU 3个月
简介: 云原生数据库 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分布式版,支持一键拉起使用,方便各位开发者学习使用。
目录
相关文章
|
3月前
|
关系型数据库 MySQL Serverless
探索PolarDB MySQL版:Serverless数据库的灵活性与性能
本文介绍了个人开发者对阿里云PolarDB MySQL版,特别是其Serverless特性的详细评测体验。评测涵盖了产品初体验、性能观测、Serverless特性深度评测及成本效益分析等方面。尽管试用过程中遇到一些小问题,但总体而言,PolarDB MySQL版表现出色,提供了高性能、高可用性和灵活的资源管理,是个人开发者和企业用户的优秀选择。
|
3月前
|
存储 关系型数据库 分布式数据库
揭秘PolarDB:中国云原生数据库的超级英雄,如何颠覆传统数据存储?
在数字化时代,数据成为企业的核心资产,而云原生数据库则是推动企业转型的关键。PolarDB凭借其先进的存储计算分离架构,在性能、可靠性和易用性方面脱颖而出,成为国内领先的选择。它支持多种数据库引擎,提供多副本存储机制,并采用按量付费模式,有效降低管理和成本压力,助力企业实现高效、可靠的数字化转型。
76 1
|
4月前
|
关系型数据库 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、数据库、数据处理领域的前沿技术问题。
|
4月前
|
Cloud Native 关系型数据库 分布式数据库
云原生数据库2.0问题之PolarDB利用云计算技术红利如何解决
云原生数据库2.0问题之PolarDB利用云计算技术红利如何解决
|
4月前
|
Cloud Native 关系型数据库 分布式数据库
云原生关系型数据库PolarDB问题之PolarDB相比传统商用数据库的优势如何解决
云原生关系型数据库PolarDB问题之PolarDB相比传统商用数据库的优势如何解决
42 1
|
4月前
|
存储 关系型数据库 MySQL
再探PolarDB —— PolarDB MySQL 四大场景下的全方位评测
本文全面评测了阿里云PolarDB MySQL在四大关键场景下的表现:Serverless极致弹性、列存索引(IMCI)、弹性并行查询(ePQ)以及无感秒切高可用。通过官方提供的免费体验资源,我们深入了解了PolarDB MySQL的核心能力和性能。Serverless极致弹性列存索引(IMCI弹性并行查询(ePQ)无感秒切高可用此外,文章还介绍了PolarDB MySQL在数据备份和HTAP(混合事务/分析处理)场景下的优势,包括灵活的备份策略、高效的全量和库表恢复方式,以及通过IMCI支持的HTAP能力。这些特性共同构成了PolarDB MySQL作为一款先进的云数据库服务的强大竞争力。
|
4月前
|
关系型数据库 Serverless 分布式数据库
揭秘PolarDB Serverless:大促洪峰秒级应对,无感伸缩见证科技魔法!一探云数据库管理的颠覆性革新,强一致性的守护神来了!
【8月更文挑战第13天】在云计算背景下,阿里巴巴的云原生数据库PolarDB Serverless针对弹性伸缩与高性能一致性提供了出色解决方案。本文通过一个电商平台大促活动的真实案例全面测评PolarDB Serverless的表现。面对激增流量,PolarDB Serverless能秒级自动扩展资源,如通过调用`pd_add_reader`快速增加读节点分摊压力;其无感伸缩确保服务平滑运行,不因扩展中断;强一致性模型则保障了数据准确性,即便在高并发写操作下也确保库存等数据的同步一致性。PolarDB Serverless简化了数据库管理,提升了系统效能,是追求高效云数据库管理企业的理想选择。
100 7
|
4月前
|
关系型数据库 MySQL Serverless
在部署云数据库PolarDB MySQL版 Serverless集群的过程中问题点
在部署PolarDB MySQL Serverless过程中,常见问题包括配置误解、网络配置错误、资源未及时释放及压测不熟练。建议深入理解配置项,确保合理设置伸缩策略;明确业务需求,使PolarDB与现有服务同处一地域与VPC;利用提醒功能管理资源生命周期;按官方指南执行压测。新用户面临的学习曲线、资源管理自动化不足及成本控制难题,可通过增强文档友好性、引入智能成本管理与用户界面优化来改善。
66 1
|
4月前
|
安全 关系型数据库 MySQL
揭秘:如何在无影的Serverless世界中,悄无声息地操控MySQL数据库!
【8月更文挑战第8天】在云计算领域,Serverless 枟能凭借其高效与弹性特性脱颖而出。本文采用问答形式解析函数计算环境中 MySQL 数据库的安全高效访问方法。介绍了如何利用数据库插件或 SDK 连接 MySQL,并提供了一个使用 Python 和 `pymysql` 在阿里云函数计算中连接 MySQL 的示例代码片段。同时强调了通过环境变量或密钥管理服务安全处理数据库凭证的重要性。随着 Serverless 技术的发展,数据库操作将更加简便。
84 7
|
4月前
|
Cloud Native Serverless 云计算
云原生时代的技术演进:从微服务到Serverless
在数字化转型的浪潮中,云原生技术正成为推动企业IT架构现代化的重要力量。本文将探讨云原生技术的关键组成部分—微服务与Serverless架构—如何助力企业实现敏捷开发和高效运维。通过深入分析这两种架构模式的优势与挑战,我们旨在为读者揭示云原生环境下的最佳实践和未来发展趋势。

热门文章

最新文章

相关产品

  • 函数计算