本文介紹了用SysBench工具測試PolarDB for PostgreSQL 14集群的OLTP負(fù)載性能的方法,您可以按照本文介紹自行測試對比,快速了解數(shù)據(jù)庫系統(tǒng)的性能。
測試工具
SysBench是一個跨平臺且支持多線程的模塊化基準(zhǔn)測試工具,用于評估系統(tǒng)在運行高負(fù)載的數(shù)據(jù)庫時相關(guān)核心參數(shù)的性能表現(xiàn)。使用SysBench是為了繞過復(fù)雜的數(shù)據(jù)庫基準(zhǔn)設(shè)置,甚至在沒有安裝數(shù)據(jù)庫的前提下,快速了解數(shù)據(jù)庫系統(tǒng)的性能。
測試環(huán)境
- 測試的ECS和PolarDB PostgreSQL版均在同一地域、同一可用區(qū)。
- 網(wǎng)絡(luò)類型均為VPC網(wǎng)絡(luò)。說明 ECS實例和PolarDB PostgreSQL版集群需保證在同一個VPC中。
- 測試用PolarDB PostgreSQL版集群信息如下:
- 讀場景、寫場景以及讀寫混合場景性能測試使用的是兩節(jié)點集群(一主一只讀),同時有一個standby結(jié)點。
- 使用的連接串為主結(jié)點地址,查看PolarDB PostgreSQL版集群地址請參見申請集群地址和主地址。
- 測試用ECS實例信息如下:
- 實例規(guī)格為ecs.c5.4xlarge。
- 實例所使用的鏡像為CentOS 7.6 64位。
測試場景
測試PolarDB PostgreSQL版集群(一主一只讀、一standby)的讀、寫、讀寫環(huán)境場景下的性能。
衡量指標(biāo)
TPS(Transactions Per Second):即數(shù)據(jù)庫每秒執(zhí)行的事務(wù)數(shù),以COMMIT成功次數(shù)為準(zhǔn)。
安裝SysBench
快速安裝SysBench的方法如下:
- Debian/Ubuntu
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.deb.sh | sudo bash sudo apt -y install sysbench
- RHEL/CentOS
curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash sudo yum -y install sysbench
說明 更多系統(tǒng)的二進(jìn)制安裝命令,請參考sysbench的官方文檔。
測試方法
說明 以下測試方法以PolarDB PostgreSQL版為例進(jìn)行說明。
- 連接PolarDB PostgreSQL版集群地址和端口。具體操作請參見申請集群地址和主地址。
- 連接PolarDB PostgreSQL版集群。具體操作請參見連接數(shù)據(jù)庫集群。
- 在ECS上執(zhí)行如下命令,以在PolarDB PostgreSQL版集群中創(chuàng)建數(shù)據(jù)庫
textdb
為例。psql -h XXX -p XXX -U XXX -W -c 'create database testdb;'
說明 請將本命令和后續(xù)步驟命令中的XXX替換為PolarDB PostgreSQL版集群的集群地址、端口號、用戶名。具體參數(shù)說明如下:參數(shù) 說明 -h PolarDB PostgreSQL版集群的主節(jié)點地址。 -p PolarDB PostgreSQL版集群的主節(jié)點端口。 -U PolarDB PostgreSQL版集群的用戶名。 -W 表明強(qiáng)制使用密碼登錄。 - 使用SysBench測試PolarDB PostgreSQL版的性能。具體參數(shù)說明如下:
參數(shù) 說明 --pgsql-password PolarDB PostgreSQL版集群的用戶密碼。 --pgsql-port PolarDB PostgreSQL版集群的主結(jié)點端口。 --pgsql-user PolarDB PostgreSQL版集群的用戶名。 --pgsql-host PolarDB PostgreSQL版集群的主節(jié)點地址。 說明 具體參數(shù)請根據(jù)您所在數(shù)據(jù)庫地址、端口等進(jìn)行修改。- 測試PolarDB PostgreSQL版的寫場景性能。
## 準(zhǔn)備數(shù)據(jù) 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版的讀場景性能。
## 準(zhǔn)備數(shù)據(jù) 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版的讀寫混合場景性能。
## 準(zhǔn)備數(shù)據(jù) 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
- 測試PolarDB PostgreSQL版的寫場景性能。
后續(xù)步驟
- PolarDB PostgreSQL版與同類PostgreSQL數(shù)據(jù)庫14版本的性能對比請參見與同類PostgreSQL云原生數(shù)據(jù)庫性能對比。
- PolarDB PostgreSQL版與開源PostgreSQL引擎14版本的性能對比請參見 與開源PostgreSQL性能對比。