ITPub博客

首页 > 数据库 > 数据库开发技术 > 探索PolarDB开源版的性能测试之旅

探索PolarDB开源版的性能测试之旅

原创 数据库开发技术 作者:sjw1933 时间:2024-08-29 07:30:00 0 删除 编辑
「点击蓝字,关注我吧 」

作者:Digital Observer(施嘉伟)

Oracle ACE Pro: Database

PostgreSQL ACE Partner

11年数据库行业经验,现主要从事数据库服务工作

拥有Oracle OCM、DB2 10.1 Fundamentals、MySQL 8.0 OCP、WebLogic 12c OCA、KCP、PCTP、PCSD、OCI、PolarDB技术专家、达梦师资认证、数据安全咨询高级等认证

ITPUB认证专家、PolarDB开源社区技术顾问、HaloDB技术顾问、TiDB社区技术布道师、国内某高校企业实践指导教师

公众号:Digital Observer;CSDN:施嘉伟;ITPUB:sjw1933;PGFans:施嘉伟。





碰壁




 笔者曾在《国产数据库是否能扛住压力》的公众号文章中,使用Sysbench对数据库进行了压力测试。后来,我尝试将同样的步骤应用到PolarDB开源数据库上,想要依样画葫芦地进行测试。然而,结果不如人意——我失败了。


原文链接:

国产数据库能否扛住压力—HaloDB压力测试


环境说明

ACADEMIC

PRESENTATIONS

操作系统版本 CentOS Linux release 7.6
Docker版本 24.0.2
数据库版本 PostgreSQL 11.9 (POLARDB 11.9)
实验平台 云起实验室

开始实验

ACADEMIC

PRESENTATIONS

实验环境polardb已经封装在Docker中,快速创建容器:

docker run -it --rm polardb/polardb_pg_local_instance psql
01
进入Docker环境



[root@iZuf63m6xf7bonb2a82rr4Z ~]# docker ps
CONTAINER ID   IMAGE                               COMMAND                  CREATED          STATUS          PORTS     NAMES
39974bfdee64   polardb/polardb_pg_local_instance   "./docker-entrypoint…"   36 minutes ago   Up 36 minutes             nervous_wozniak
[root@iZuf63m6xf7bonb2a82rr4Z ~]# docker exec -it 39974bfdee64 /bin/bash
postgres@39974bfdee64:~$ sudo su - root
root@39974bfdee64:~#
root@39974bfdee64:/etc# more /etc/debian_version 
bookworm/sid
02
安装Sysbench



进入Docker环境我们发现操作系统是Debian

快速安装SysBench的方法如下:

curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.deb.sh | sudo bash
sudo apt -y install sysbench
03
测试方法



首先创建一个数据库,例如test:

docker exec -it 39974bfdee64 /bin/bash
postgres@39974bfdee64:~$ psql
psql (11.9)
Type "help" for help.


postgres=# create database test;
CREATE DATABASE


参数说明



参数 说明
--pgsql-password PolarDB 用户密码。
--pgsql-port PolarDB 端口。
--pgsql-user PolarDB 用户名。
--pgsql-host PolarDB 地址。


测试PolarDB PostgreSQL版的写场景性能。

## 准备数据
sysbench --pgsql-password=XXX --pgsql-port=XXX --report-interval='1' --pgsql-host=XXX --tables='8' --db-driver='pgsql' --events='0' --histogram='on' --percentile='95' --threads='256' --table-size='64000000' --time='1200' --pgsql-user=XXX --rand-type='uniform' --pgsql-db=testdb oltp_read_only prepare

## 运行 oltp_insert 测试
sysbench --pgsql-password=XXX --pgsql-port=XXX --report-interval='1' --pgsql-host=XXX --tables='8' --db-driver='pgsql' --events='0' --histogram='on' --percentile='95' --threads='256' --table-size='64000000' --time='1200' --pgsql-user=XXX --rand-type='uniform' --pgsql-db=testdb oltp_insert run

## 运行 oltp_update_index 测试
sysbench --pgsql-password=XXX --pgsql-port=XXX --report-interval='1' --pgsql-host=XXX --tables='8' --db-driver='pgsql' --events='0' --histogram='on' --percentile='95' --threads='256' --table-size='64000000' --time='1200' --pgsql-user=XXX --rand-type='uniform' --pgsql-db=testdb oltp_update_index run

## 运行 oltp_update_non_index 测试
sysbench --pgsql-password=XXX --pgsql-port=XXX --report-interval='1' --pgsql-host=XXX --tables='8' --db-driver='pgsql' --events='0' --histogram='on' --percentile='95' --threads='256' --table-size='64000000' --time='1200' --pgsql-user=XXX --rand-type='uniform' --pgsql-db=testdb oltp_update_non_index run

## 运行 oltp_write_only 测试
sysbench --pgsql-password=XXX --pgsql-port=XXX --report-interval='1' --pgsql-host=XXX --tables='8' --db-driver='pgsql' --events='0' --histogram='on' --percentile='95' --threads='256' --table-size='64000000' --time='1200' --pgsql-user=XXX --rand-type='uniform' --pgsql-db=testdb oltp_write_only run

使用SysBench测试PolarDB PostgreSQL版的读场景性能。

## 准备数据
sysbench --pgsql-password=XXX --pgsql-port=XXX --report-interval='1' --pgsql-host=XXX --tables='8' --db-driver='pgsql' --events='0' --histogram='on' --percentile='95' --threads='256' --table-size='64000000' --time='1200' --pgsql-user=XXX --rand-type='uniform' --pgsql-db=testdb oltp_read_only prepare

## 运行 oltp_point_select
sysbench --pgsql-password=XXX --pgsql-port=XXX --report-interval='1' --pgsql-host=XXX --tables='8' --db-driver='pgsql' --events='0' --histogram='on' --percentile='95' --threads='256' --table-size='64000000' --time='1200' --pgsql-user=XXX --rand-type='uniform' --pgsql-db=testdb oltp_point_select run

## 运行 oltp_read_only
sysbench --pgsql-password=XXX --pgsql-port=XXX --report-interval='1' --pgsql-host=XXX --tables='8' --db-driver='pgsql' --events='0' --histogram='on' --percentile='95' --threads='256' --table-size='64000000' --time='1200' --pgsql-user=XXX --rand-type='uniform' --pgsql-db=testdb oltp_read_only run

使用SysBench测试PolarDB PostgreSQL版的读写混合场景性能。

## 准备数据
sysbench --pgsql-password=XXX --pgsql-port=XXX --report-interval='1' --pgsql-host=XXX --tables='8' --db-driver='pgsql' --events='0' --histogram='on' --percentile='95' --threads='256' --table-size='64000000' --time='1200' --pgsql-user=XXX --rand-type='uniform' --pgsql-db=testdb oltp_read_only prepare

## 运行 oltp_read_write
sysbench --pgsql-password=XXX --pgsql-port=XXX --report-interval='1' --pgsql-host=XXX --tables='8' --db-driver='pgsql' --events='0' --histogram='on' --percentile='95' --threads='256' --table-size='64000000' --time='1200' --pgsql-user=XXX --rand-type='uniform' --pgsql-db=testdb oltp_read_write run

04
测试样例



## 准备数据
postgres@39974bfdee64:~$ sysbench --pgsql-password=postgres --pgsql-port=5432 --report-interval='1' --pgsql-host=127.0.0.1 --tables='8' --db-driver='pgsql' --events='0' --histogram='on' --percentile='95' --threads='2' --table-size='50000' --time='60' --pgsql-user=postgres --rand-type='uniform' --pgsql-db=test oltp_read_only prepare
## 运行 oltp_insert 测试
postgres@39974bfdee64:~$ sysbench --pgsql-password=postgres --pgsql-port=5432 --report-interval='1' --pgsql-host=127.0.0.1 --tables='8' --db-driver='pgsql' --events='0' --histogram='on' --percentile='95' --threads='2' --table-size='50000' --time='60' --pgsql-user=postgres --rand-type='uniform' --pgsql-db=test oltp_insert run
总结

     在数据库性能测试工具Sysbench的部署过程中,不同操作系统版本之间存在一些细微差异。如果不仔细阅读相关说明,很容易导致部署过程中的问题。我之前没有按照官方文档的建议进行操作,结果走了不少弯路。


     此外,各个数据库厂商在官方文档中提供了与Sysbench配合使用的具体测试说明。这些说明通常针对特定的数据库版本和操作系统环境,提供了最佳实践和常见问题的解决方案。忽略这些文档可能会导致测试结果不准确,甚至可能得出误导性的结论。


     总结来说,在Sysbench的部署过程中,一定要仔细阅读并遵循官方文档的说明,尤其是针对不同操作系统版本的差异化配置建议。这样可以避免不必要的麻烦,提高部署效率,并确保测试结果的准确性。


参考文档:https://help.aliyun.com/zh/polardb/polardb-for-postgresql/oltp-performance-test-1?spm=a2c4g.11186623.0.i0





大佬新书推荐





END



往期推荐:






师傅,为什么我找不到pg数据库日志?

探索Klustron数据库:高性能分布式新选择?

初探PolarDB for PostgreSQL开源数据库

国产数据库能否扛住压力—HaloDB压力测试

半年度总结:技术路上的光芒







在看点这里

点击"阅读原文"


原文作者:Digital Observer;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论
11年数据库行业经验,Oracle ACE、PG ACE、OCM、IBM Certified DBA、MySQL OCP、PolarDB技术专家、KCP、PCTP、PCSD、达梦师资认证、PolarDB开源社区技术顾问、ITPUB认证专家、某高校外聘教师

注册时间:2019-05-05

  • 博文量
    295
  • 访问量
    300750