数据库性能测试指标

内存利用   

会话统计

SQL执行情况

 

测试环境

 

·测试机

·192.168.56.185 : Unix (64 Bit)

·压力机

·192.168.56.183 : Unix (64 Bit)

·数据库

·polardb

软件安装

压缩包上传183,版本benchmarksql-5.0

安装:直接解压,假设解压路径 /root/benchmarksql-5.0

安装jdk

[注]:检查已有jdk1.8

 

如无jdk先安装jdk

yum install jdk-7u79-linux-x64.rpm

安装Apache ant

用于编译benchmarkSQL, 5.0版本是需要编译的。

压缩包上传183,版本apache-ant-1.9.1-bin

安装:直接解压apache-ant-1.9.1-bin.tar.gz包即可。编译benchmarksql时在环境变量PATH中添加上解压包的bin路径即可。

编译benchmarksql5.0

# cd benchmarksql5.0

# ant

 

benchmarksql5.0测试步骤

(1)在185上创建benchmarksql的测试用户和数据库

#add polardb user(已完成)
groupadd polardb
useradd -g polardb polardb
huge_pages = on
chown -R polardb /u01/polar1100
cd /u01/polar1100
 
#init database(已完成)
su polardb
cd /u01/polar1100
/u01/polar1100/bin/initdb -D ./data
 
#start database
###database conf,在data/pg_hba.conf下面增加
host    all             all             0.0.0.0/0            trust
###database conf,在data/postgresql.conf下面增加以下配置参数
listen_addresses = '*'
max_connections = 2000
shared_buffers = 10240MB
###start instance
/u01/polar1100/bin/pg_ctl -D /u01/polar1100/data -l /u01/polar1100/logfile start
 
#create test db
/u01/polar1100/bin/psql -h localhost -p 5444
create user benchmarksql with encrypted password 'benchmark';
create database benchmarksql owner benchmarksql;

 

(2)回到测试机的benchmarksql目录,修改配置文件prop.pg(可以先备份配置文件)

#load data(在压力机器上执行)

cd /root/polardb/benchmarksql-5.0/run

cp props.pg props.polar

###修改props.polar

conn=jdbc:postgresql://192.168.56.185:5444/benchmarksql

user=benchmarksql

password=benchmark

warehouses=200

loadWorkers=16

###装载数据

./runDatabaseBuild.sh props.polar

 

(3)建立测试库,并加载数据

 ./runDatabaseBuild.sh props.polar

(4)修改性能测试配置参数(测试机)

/u01/polar1100/bin/psql -h localhost -p 5444 benchmarksql -c 'select now;drop index bmsql_oorder_idx1;select now;'
/u01/polar1100/bin/psql -h localhost -p 5444 benchmarksql -c 'select now;create index bmsql_oorder_idx2 on bmsql_oorder (o
_w_id, o_d_id, o_c_id);select now;'
/u01/polar1100/bin/psql -h localhost -p 5444 benchmarksql -c 'select now;vacuum analyze;select now;'
/u01/polar1100/bin/psql -h localhost -p 5444 benchmarksql -c 'checkpoint;'
###database conf,在data/postgresql.conf下面增加以下配置参数
huge_page = on
maintenance_work_mem = 2GB
synchronous_commit=off
full_page_writes=off
wal_buffers = 512MB
max_wal_senders = 0
wal_level = minimal
wal_compression = on
max_wal_size = 50GB
min_wal_size = 40GB
wal_writer_delay = 200ms                # 1-10000 milliseconds
wal_writer_flush_after = 2MB            # measured in pages, 0 disables
commit_delay = 20
commit_siblings = 5
bgwriter_delay = 20ms
bgwriter_lru_maxpages = 2000
bgwriter_lru_multiplier = 10.0
bgwriter_flush_after = 1024kB
checkpoint_timeout = 240min
checkpoint_completion_target = 0.9
autovacuum = on
autovacuum_naptime = 10min
autovacuum_vacuum_scale_factor = 0.2
autovacuum_analyze_scale_factor = 0.6
autovacuum_freeze_max_age = 1200000000
autovacuum_multixact_freeze_max_age = 1400000000

(5)备份数据目录

(这样以后测试时就不需要删除表再重新加载数据了)

/u01/polar1100/bin/pg_ctl -D /u01/polar1100/data stop -m smart
cd /u01/polar1100/
tar -czf data.tar.gz ./data

(6)测试机记录系统磁盘使用情况,并截图

测试机执行

df-h

 

(7)跑测试,并生成结果,并截图

time ./runBenchmark.sh props.polar

(8) 多次测试

多次测试时,为了测试的准确性,最好删除当前数据目录,然后从4)中备份的数据目录中拷贝一份用于新的测试。或者执行以下步骤,清空数据库,再重建数据库(这样比较耗时间,200个warehouses的库可能需要1个小时以上,因此不推荐)。

 

###########清除上次测试数据############
 ./runDatabaseDestroy.sh props.pg
 
###########还原数据库建库数据############
/u01/polar1100/bin/pg_ctl -D /u01/polar1100/data stop -m immediate
cd /u01/polar1100/
rm -rf /u01/polar1100/data
tar -xzf /u01/polar1100/data.tar.gz
 
#######针对不同连接数设置参数(在压力机上测试)#########
#修改props.polardb
terminals=100/300/500/1000/1500   #100/300/..并发terminal测试
runTxnsPerTerminal=0
runMins=60
limitTxnsPerMin=3000000
 
##执行测试##
cd /root/benchmarksql-5.0/run
Time ./runBechmark.sh props.polar 2>&1 | tee mylog.log

 

测试时间以及截图汇总

1.使用nmon16监视并记录数据库服务器资源情况,记录频率为每分钟采集一次,共采集60次,命令:

./nmon -s60 -c60 -f -m /root/a

 

 

2.测试完成后记录TpmC数据结果值,取得nmon工作记录的结果文件。

terminals=100:

 

总结相当于二次学习和提炼,强化记忆,希望自己坚持下去