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分布式版,支持一键拉起使用,方便各位开发者学习使用。
目录
相关文章
|
8天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
23 1
|
10天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
25 4
|
17天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
84 1
|
19天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
61 2
|
22天前
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
89 4
|
4天前
|
运维 关系型数据库 MySQL
安装MySQL8数据库
本文介绍了MySQL的不同版本及其特点,并详细描述了如何通过Yum源安装MySQL 8.4社区版,包括配置Yum源、安装MySQL、启动服务、设置开机自启动、修改root用户密码以及设置远程登录等步骤。最后还提供了测试连接的方法。适用于初学者和运维人员。
37 0
|
27天前
|
存储 关系型数据库 MySQL
如何在MySQL中创建数据库?
【10月更文挑战第16天】如何在MySQL中创建数据库?
|
18天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第26天】数据库作为现代应用系统的核心组件,其性能优化至关重要。本文主要探讨MySQL的索引策略与查询性能调优。通过合理创建索引(如B-Tree、复合索引)和优化查询语句(如使用EXPLAIN、优化分页查询),可以显著提升数据库的响应速度和稳定性。实践中还需定期审查慢查询日志,持续优化性能。
47 0
|
27天前
|
存储 监控 关系型数据库
MySQL并发控制与管理:优化数据库性能的关键
【10月更文挑战第17天】MySQL并发控制与管理:优化数据库性能的关键
110 0
|
27天前
|
存储 SQL 关系型数据库
MySQL Workbench支持哪些数据库引擎
【10月更文挑战第17天】MySQL Workbench支持哪些数据库引擎
21 0

热门文章

最新文章

相关产品

  • 函数计算