探索PolarDB开源版的性能测试之旅
作者: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开源数据库上,想要依样画葫芦地进行测试。然而,结果不如人意——我失败了。
原文链接:
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[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
进入Docker环境我们发现操作系统是Debian
快速安装SysBench的方法如下:
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.deb.sh | sudo bash
sudo apt -y install sysbench首先创建一个数据库,例如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
## 准备数据
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
往期推荐:
在看点这里
点击"阅读原文"