關於Jmeter直連數據庫進行壓測,網上有好多教程了,pg數據庫的相對少一些,今天自己測試了下,還是挺簡單的,有個別需要注意的地方。相較於Loadrunner這么全面龐大的壓測工具,Jmeter在數據庫協議的支持上還是要靈活好多的,也比LR易用。
下載通過jdbc連接postgresql的jar包
這個地方要注意一下,如果沒有jar包或jar包的版本不對,會提示“could not load 'org.postgresql.Driver'”。
根據自己機器安裝的jdk版本(如我的是1.8.1,下載JDBC4.2的版本),下載對應版本的jar包,如果下載版本不對,可能會出現上述錯誤。
下載地址:https://jdbc.postgresql.org/download.html
下載完成之后,放到Jmeter安裝路徑lib文件夾下,如C:/Program Files/Apach Jmeter4.0/lib/下,然后重啟Jmeter。
我下載的是這個版本:

配置JDBC連接
Jmeter基本使用就不說了,首先測試計划右鍵添加線程組,線程組下添加--配置元件--jdbc connection configuration。
注意:
- Variable Name for created pool:連接池名稱,隨意取,后續請求會用到,如名稱為pgsql。
- Validation Query:這個有好多資料里都沒說到,validationQuery must be an SQL SELECT statement, that returns at least one row。不同的數據庫,所選擇的Validation Query是不同的,經過外國友人的測試,具體可參照以下(postgresql選select 1):
-
- hsqldb -
select 1 from INFORMATION_SCHEMA.SYSTEM_USERS - Oracle -
select 1 from dual - DB2 -
select 1 from sysibm.sysdummy1 - mysql -
select 1 - microsoft SQL Server -
select 1(tested on SQL-Server 9.0, 10.5 [2008]) - postgresql -
select 1 - ingres -
select 1 - derby -
values 1 - H2 -
select 1 - Firebird -
select 1 from rdb$database
- hsqldb -
- Database Url:連接postgresql的配置,格式:jdbc:postgresql://ip:port/dbname,如 jdbc:postgresql://10.21.11.11:5432/testdb
- JDBC Driver class:數據庫驅動,不同數據庫類型選擇不一樣,postgresql選擇“org.postgresql.Driver”
- username,password:數據庫登錄信息
配置完成后,就可以添加sql請求進行測試了。

配置jdbc Request
線程組右鍵添加--Sampler--JDBC Request。
- Variable Name of Pool declared in JDBC Connection Configuration:這個地方就是之前說到的,在配置時取的連接池名稱,一定要一致,如之前連接池名稱為pgsql,該處填pgsql。
- Query Type:根據自己要測試的sql類型,選擇對應的即可。如select語句為Select Statement。這個地方要注意的是,sql的執行,是有解析的,經過語法分析、語義分析、生成執行計划等,所以為了提高性能,會有預編譯,即對於多次執行的可變參數sql來講,選擇Prepared Statement性能要好一些。選擇Prepared Statement后,用?進行參數填充並在下邊進行參數配置。
- Query:要測試的sql。
后續的參數化、壓測等就跟正常請求沒區別了。


