1 CurveBS作为云原生数据库的存储底座
CurveBS作为Curve的子项目,提供高可用、高性能、易运维的分布式块存储功能,通过在其上架构一层 PolarDB-FileSystem,作为云原生数据库的存储底座,完美支持云原生数据库的存算分离架构。以在其上构建 PolarDB-for-PostgreSQL 为例,其架构如下图所示:
2 测试性能基准
本次数据库方向的测试活动,基于上述架构,测试 PolarDB-for-PostgreSQL 在CurveBS + PolarFS上的性能,参考的基准性能和测试方法如下:
2.1 测试环境信息
2.1.1 硬件配置 (推荐)
节点 | roles | 磁盘情况 |
---|---|---|
计算节点1 | curve-sdk,PolarFS, PolarDB-for-PG读写节点 | 一块盘放置PG本地数据(或部署于系统盘) |
计算节点2 | curve-sdk,PolarFS, PolarDB-for-PG只读节点 | 一块盘放置PG本地数据(或部署于系统盘) |
存储节点1 | curve-mds,etcd, curve-chunkserver | 20块盘用于部署chunkserver,另加一块盘用于部署curve-mds和etcd(或部署于系统盘) |
存储节点2 | curve-mds,etcd, curve-chunkserver | 20块盘用于部署chunkserver,另加一块盘用于部署curve-mds和etcd (或部署于系统盘) |
存储节点3 | curve-mds,etcd, curve-chunkserver | 20块盘用于部署chunkserver,另加一块盘用于部署curve-mds和etcd (或部署于系统盘) |
存储节点4 | curve-chunkserver | 20块盘用于部署chunkserver |
存储节点5 | curve-chunkserver | 20块盘用于部署chunkserver |
存储节点6 | curve-chunkserver | 20块盘用于部署chunkserver |
2.1.2 软件配置(推荐)
软件 | 版本 | 说明 |
---|---|---|
Curve | 1.2.5 | |
PolarFS | 2.1.4 | 需要使用支持curvebs后端sdk的版本,地址:GitHub - opencurve/PolarDB-FileSystem: A userland shared disk filesystem supports Curve cloud native storage system |
PolarDB-for-PG | POLARDB_11_STABLE |
2.1.3 Curve卷大小
编号 | 卷类型 | 卷大小 | 说明 |
---|---|---|---|
1 | curve | 10T | 请使用条带化卷!参数stripeUnit=16384,strpeCount=64) |
条带化命令参考:
curve create --filename /pg --length 10240 --user curve --stripeUnit 16384 --stripeCount 64
2.2 测试工具(推荐)
2.2.1 测试工具 benchmarksql
BenchmarkSQL:是一款经典的开源数据库测试工具,内嵌了TPCC测试脚本,可以对EnterpriseDB、PostgreSQL、MySQL、Oracle以及SQL Server等数据库直接进行测试
使用版本:5.0
2.2.2 压测工具 pgbench
pgbench :postgresql 自带提供了一款轻量级的压力测试工具,按自己的需求对数据库进行性能压力测试
版本:跟随pgsql
2.3 性能测试基准数据
2.3.1 pgbench
测试场景 | 事务平均延时 | TPS |
---|---|---|
10000w数据16并发16线程 | 4.471ms | 3577 |
10000w数据32并发32线程 | 5.228ms | 6120 |
10000w数据64并发64线程 | 7.578ms | 8444 |
10000w数据128并发128线程 | 11.423ms | 11204 |
10000w数据256并发256线程 | 20.519ms | 12473 |
2.3.2 benchmarksql
配置参数 | tpmc | tpmTotal |
---|---|---|
warehouse = 10,loadWorkers=10,terminals=10 | 21497.80 | 49536.80 |
warehouse = 20,loadWorkers=20,terminals=50 | 53287.20 | 122778.00 |
warehouse = 10,loadWorkers=100,terminals=50 | 39135.00 | 89997.00 |
warehouse = 10,loadWorkers=50,terminals=50 | 30516.40 | 70275.20 |
3 用户测试步骤
- 使用curveadm部署curvebs集群( curvebs cluster deployment · opencurve/curveadm Wiki · GitHub )
- 部署PolarFS ( others · opencurve/curveadm Wiki · GitHub )
- 部署PolarDB-for-PostgreSQL( 编译部署:基于 PFS 文件系统 | PolarDB for PostgreSQL )
4 参考资料
- 云原生关系型数据库 PolarDB PostgreSQL引擎 性能白皮书 https://help.aliyun.com/document_detail/116849.html
- https://github.com/petergeoghegan/benchmarksql/blob/master/HOW-TO-RUN.txt
- https://chowdera.com/2021/10/20211017233149589M.html
- https://apsaradb.github.io/PolarDB-for-PostgreSQL/zh/deploying/db-pfs.html
- https://apsaradb.github.io/PolarDB-for-PostgreSQL/zh/operation/tpcc-test.html
- https://bbs.huaweicloud.com/forum/thread-36304-1-1.html