基于POLARDB数据库的压测实践

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
简介: POLARDB架构简介 PolarDB是阿里云ApsaraDB数据库团队研发的基于云计算架构的下一代关系型数据库(暂时仅支持MySQL,PostgreSQL正在紧锣密鼓的开发中),其最大的特色是计算节点(主要做SQL解析以及存储引擎计算的服务器)与存储节点(主要做数据块存储,数据库快照的服务器)分.

POLARDB架构简介

PolarDB是阿里云ApsaraDB数据库团队研发的基于云计算架构的下一代关系型数据库(暂时仅支持MySQL,PostgreSQL正在紧锣密鼓的开发中),其最大的特色是计算节点(主要做SQL解析以及存储引擎计算的服务器)与存储节点(主要做数据块存储,数据库快照的服务器)分离,其次,与传统的云数据库一个实例一份数据拷贝不同,同一个实例的所有节点(包括读写节点和只读节点)都访问存储节点上的同一份数据,最后,借助优秀的RDMA网络以及最新的块存储技术,PolarDB的数据备份耗时可以做到秒级别(备份时间与底层数据量无关),这三点相结合,我们可以推断出PolarDB不但满足了公有云计算环境下用户业务快速弹性扩展的刚性需求(只读实例扩展时间与底层数据量无关),同时也满足了互联网环境下用户对数据库服务器高可用的需求(服务器宕机后无需搬运数据重启进程即可服务)。
PolarDB公测版本的总体架构图
DB Server: 即数据库进程(Polar DataBase, 简称PolarDB)。PolarDB数据库内核区分实例角色,目前包括三种角色,Primary,Standby和Replica。Primary即为拥有读写权限的读写库,Replica即为只读实例,仅仅拥有读取数据的权限(后台线程也不能修改数据),Primary和Replica采用Shared Everything架构,即底层共享同一份数据文件和日志文件。StandBy节点拥有一份独立的数据和日志文件(如图2所示),虽然用户线程依然只有读取数据的权限,但是后台线程可以更新数据,例如通过物理复制的方式从Primary节点更新增量数据。StandBy节点主要用来机房级别的容灾以及创建跨可用区的只读实例,公测阶段暂时不开放。由于只读实例的扩展不需要拷贝数据,创建新的只读实例不但速度快,而且很便宜,用户只需要支付相应计算节点的成本即可。我们称StandBy和Replica节点为Slave节点,Primary节点也可称为Master节点。

User Space File System: 即用户态文件系统(Polar File Sytem, 简称PolarFS)。由于多个主机的数据库实例需要访问块存储上的同一份数据,常用的Ext4等文件系统不支持多点挂载,PolarDB数据库团队自行研发了专用的用户态文件系统,提供常见的文件读写查看接口,便于MySQL和相关的外围运维工具使用文件系统支持类似O_DIRECT的非缓存方式读写数据,还支持数据页原子写,IO优先级等优秀的特性,为上层数据库的高性能提供了结实的保障。传统的文件系统,由于嵌入在操作系统内核中,每次系统文件读写操作都需要先陷入内核态,完成后再返回用户态,造成效率低下。PolarFS以函数库形式编译在MySQL中,因此都运行在用户态,从而减少了操作系统切换的开销。

Data Router & Cache: 即块存储系统客户端(Polar Store Client, 别名PolarSwitch)。PolarFS收到读写请求后,会通过共享内存的方式把数据发送给PolarSwitch,PolarSwith是一个计算节点主机维度的后台守护进程,接收主机上所有实例以及工具发来的读写块存储的请求。PolarSwith做简单的聚合,统计后分发给相应的存储节点上的守护进程。由此可见PolarSwitch是一个重资源的进程,如果处理不好,对计算节点上的数据库实例有很大的影响,因此我们的管控程序对其使用了CPU绑定,内存预分配,资源隔离等一些手段,并且同时部署了高效可靠的监控系统,保证其稳定运行。

Data Chunk Server: 即块存储系统服务器端(Polar Store Server, 别名ChunkSever)。上述三个部件都运行在计算节点上,这个部件则运行在存储节点上。主要负责相应数据块的读取。数据块的大小目前为10GB,每个数据块都有三个副本(位于三台不同的存储节点上),两个副本写成功,才给客户端返回成功。支持数据块维度的高可用,即如果一个数据块发生不可用,可以在上层无感知的情况下秒级恢复。此外,PolarStore使用了类似Copy On Write技术,支持秒级快照,即对数据库来说,不管底层数据有多大,都能快速完成全量数据备份,因此PolarDB支持高达100T的磁盘规格。
计算节点和存储节点之间通过25G RDMA网络连接,保证数据的传输瓶颈不会出现在网络上。

此外,PolarDB还有一套完善的基于docker的管控系统,处理用户下发的创建实例,删除实例,创建账号等任务,还包括完善详细的监控,以及可靠的高可用切换。管控系统还维护了一套元数据库,用以记录各个数据块的位置信息,提供给PolarSwitch,便于其转发。
可以说,PolarDB整个项目用了很多很多的新技术黑科技,给用户直接的感受是,又快(性能是官方MySQL6倍)又大(磁盘规格支持高达100T)又便宜(价格只有商业数据库的1/10)。

实践内容

POLARDB数据库准备

进入云数据库阿里云POLARDB控制台进行配置:2核4GB(独享配置)
image
创建后会发现有两个实例,一个主实例,一个只写实例。

测试过程

本次场景使用HyperPacer PRO 2016版进行数据库压测。
配置如下:

1.进行工程配置:
image
初始化JDBC配置和JDBC请求:
image
这里各个编辑控件和下拉控件的使用及每个选项的说明,只要在HyperPacer的工具栏上点击帮助就可以看到。在绑定变量赋值的编辑区域里,我们看到在前两个变量赋值这里做了参数化。

这里需要注意的是:此处绑定变量赋值的顺序和个数需要和存储过程中定义的参数保持完全一致。

在绑定变量类型的编辑区域,这里的类型只可以是在java.sql.Types中定义的类型,并且要保证和我们调用的存储过程中的参数类型保持一致。

我们这里说的类型保持一致要分为两方面来看:一方面要保证用于传参的变量类型保持一致,即这里写的JDBC类型要和SQL类型保持一致,关于保持类型一致的转换映射关系可以查看JDK的官方文档

2.如下图进行压力数据测试配置:
image

参数详解
基准用户数:系统过载前允许的最大用户数
最大用户数:系统过载后允许的最大用户数
基准用户加压策略:固定时间内加载固定数量的基准用户进入系统
过载用户加压策略:固定时间内加载固定数量的过载用户进入系统
持续总时长:系统过载后持续保持过载运行的时间
用户退出策略:测试结束前多少时间内退出全部用户
压力阀配置:配置测算系统过载的依据,如平均CPU利用率达到99%等。

相关实践学习
块存储快速入门
块存储是阿里云为云服务器ECS提供的块设备产品。通过体验挂载数据盘、分区格式化数据盘(Linux)、创建云盘快照、重新初始化数据盘、使用快照回滚云盘和卸载数据盘等功能,带您快速入门块存储。
目录
相关文章
|
7天前
|
关系型数据库 Serverless 分布式数据库
揭秘PolarDB Serverless:大促洪峰秒级应对,无感伸缩见证科技魔法!一探云数据库管理的颠覆性革新,强一致性的守护神来了!
【8月更文挑战第13天】在云计算背景下,阿里巴巴的云原生数据库PolarDB Serverless针对弹性伸缩与高性能一致性提供了出色解决方案。本文通过一个电商平台大促活动的真实案例全面测评PolarDB Serverless的表现。面对激增流量,PolarDB Serverless能秒级自动扩展资源,如通过调用`pd_add_reader`快速增加读节点分摊压力;其无感伸缩确保服务平滑运行,不因扩展中断;强一致性模型则保障了数据准确性,即便在高并发写操作下也确保库存等数据的同步一致性。PolarDB Serverless简化了数据库管理,提升了系统效能,是追求高效云数据库管理企业的理想选择。
35 7
|
5天前
|
关系型数据库 MySQL Serverless
在部署云数据库PolarDB MySQL版 Serverless集群的过程中问题点
在部署PolarDB MySQL Serverless过程中,常见问题包括配置误解、网络配置错误、资源未及时释放及压测不熟练。建议深入理解配置项,确保合理设置伸缩策略;明确业务需求,使PolarDB与现有服务同处一地域与VPC;利用提醒功能管理资源生命周期;按官方指南执行压测。新用户面临的学习曲线、资源管理自动化不足及成本控制难题,可通过增强文档友好性、引入智能成本管理与用户界面优化来改善。
19 1
|
11天前
|
SQL 关系型数据库 分布式数据库
PolarDB Proxy配置与优化:提升数据库访问效率
PolarDB是阿里云的高性能分布式数据库,PolarDB Proxy作为关键组件,解析并转发SQL请求至集群。本文概览PolarDB Proxy功能,包括连接池管理、负载均衡及SQL过滤;并提供配置示例,如连接池的最大连接数与空闲超时时间设置、一致哈希路由及SQL安全过滤规则。最后探讨了监控调优、查询缓存及网络优化策略,以实现高效稳定的数据库访问。
39 2
|
12天前
|
存储 关系型数据库 分布式数据库
揭秘PolarDB:中国云原生数据库的超级英雄,如何颠覆传统数据存储?
【8月更文挑战第8天】在数字化时代,数据成为企业的核心资产。随着云技术的发展,企业纷纷向云端迁移,选择合适的云原生数据库至关重要。PolarDB凭借卓越性能、高可靠性和易用性在中国市场领先。它采用存储计算分离架构,支持独立扩展,提高处理大规模数据的效率和灵活性。多副本机制确保数据高可用性和持久性,优于单副本存储方案。兼容多种数据库引擎,提供丰富管理工具,降低迁移和维护成本。按量付费模式帮助企业有效控制成本。因此,PolarDB为企业数字化转型提供了强有力的支持。
41 1
|
13天前
|
存储 SQL 运维
“震撼发布!PolarDB-X:云原生分布式数据库巨擘,超高并发、海量存储、复杂查询,一网打尽!错过等哭!”
【8月更文挑战第7天】PolarDB-X 是面向超高并发、海量存储和复杂查询场景设计的云原生分布式数据库系统
66 1
|
16天前
|
存储 缓存 运维
优化数据库查询性能的关键技巧与实践
在当今软件开发中,高效的数据库查询是保证系统性能的重要因素之一。本文将探讨如何通过优化查询语句、索引设计以及服务器配置等多方面手段,提升数据库查询效率,从而实现更快速和可靠的数据检索和处理。
|
1天前
|
存储 SQL 关系型数据库
关系型数据库和非关系型数据库的区别和选择方法?
【8月更文挑战第17天】关系型数据库和非关系型数据库的区别和选择方法?
4 0
|
5天前
|
人工智能 关系型数据库 分布式数据库
DB+AI会擦出怎样的火花?一站式带你了解阿里云瑶池数据库经典的AI产品服务与实践!
从 DB+AI 精选解决方案、特惠权益等,一站式带你了解阿里云瑶池数据库经典的AI产品服务与实践。
|
6天前
|
存储 关系型数据库 MySQL
MySQL——数据库备份上传到阿里云OSS存储
MySQL——数据库备份上传到阿里云OSS存储
20 0
|
6天前
|
缓存 NoSQL Redis
一天五道Java面试题----第九天(简述MySQL中索引类型对数据库的性能的影响--------->缓存雪崩、缓存穿透、缓存击穿)
这篇文章是关于Java面试中可能会遇到的五个问题,包括MySQL索引类型及其对数据库性能的影响、Redis的RDB和AOF持久化机制、Redis的过期键删除策略、Redis的单线程模型为何高效,以及缓存雪崩、缓存穿透和缓存击穿的概念及其解决方案。