一、下載下傳mysql jar包
下載下傳mysql jar包
http://dev.mysql.com/downloads/connector/j/
網盤下載下傳位址:mysql-connector-java-commercial-5.1.25-bin.jar
檢視jar包支援的mysql版本:http://dev.mysql.com/doc/connector-j/en/connector-j-versions.html
檢視mysql資料庫版本:SELECT VERSION();
注:如果下載下傳的jar包版本不支援mysql資料庫,運作Jmter時可能會報錯:no suitable driver found for jdbc:mysql//……..
為Jmeter添加jar檔案
下載下傳後解壓.zip檔案,把mysql-connector-java-x.x.x-bin.jar(例中:mysql-connector-java-commercial-5.1.25-bin.jar)放到Jmeter安裝目錄下的lib目錄下(例中:D:\Program Files\apache-jmeter-2.13\lib)
2. 啟動Jmeter,添加需要的原件,Sampler
二、配置JDBC Connection Configuration
重要參數說明:
- Variable Name:資料庫連接配接池的名稱,我們可以有多個jdbc connection configuration,每個可以起個不同的名稱,在jdbc request中可以通過這個名稱選擇合适的連接配接池進行使用。
- Max Number of Connection: 資料庫最大連結數
- PoolTimeout: 資料庫連結逾時,機關ms
- Idle Cleanup Interval (ms): 資料庫空閑清理的間隔時間,機關ms
- Auto Commit:自動送出。有三個選項,true、false、編輯(自己通過jmeter提供的函數設定)
-
Transaction Isolation:
事務間隔級别設定,主要有如下幾個選項:(對JMX加解密)
【TRANSACTION_NODE 事務節點 、
TRANSACTION_READ_UNCOMMITTED 事務未送出讀、
TRANSACTION_READ_COMMITTED 事務已送出讀 、
TRANSACTION_SERIALIZABLE 事務序列化 、
DEFAULT 預設、
TRANSACTION_REPEATABLE_READ 事務重複讀、
- Database URL:資料庫url,jdbc:mysql://主機ip或者機器名稱:mysql監聽的端口号/資料庫名稱, 如:jdbc:mysql://localhost:3306/test
- JDBC Driver class:JDBC驅動
- username:資料庫登陸的使用者名
- passwrod:資料庫登陸的密碼
下面是原文和翻譯:
(1) Variable Name Bound to Pool
Variable Name,資料庫連接配接池的變量名,之後JDBC request可以通過選擇不同的連接配接池名來選擇不同的資料庫連接配接
Variable name變量名稱:與JDBC Request的Variable name保持一緻
原因:因為連結資料庫是需要在JDBC Connection Configuration中配置好的,然後賦予一個變量名稱,那麼JDBC Request想要去通路資料庫,就必須通過這個配置好的元件去連結,是以JDBC Reques就需要通過讀取JDBC Connection Configuration的變量中的資訊,
那怎麼讀取呢,JDBC Reques就需要用到這個變量了,就需要到名稱為mysql的元件中去應用。
(2) Connection Pool Configuration
Max Number of Connections 該資料庫連接配接池的最大連接配接數,一般可設定為0,意思是每個線程都使用單獨的資料庫連接配接,線程之間資料庫連接配接不共享
中文:池中允許的最大連接配接數。在大多數情況下,将其設定為0,這意味着每個線程将得到它自己的池,其中隻有一個連接配接,即線程之間不共享連接配接。如果您真的想要使用共享池(為什麼?),那麼将max count與線程數相同,以確定線程不會互相等待。
原文:aximum number of connections allowed in the pool. In most cases, set this to zero (0) . This means that each thread will get its own pool with a single connection in it, i.e. the connections are not shared between threads. If you really want to use shared pooling (why?), then set the max count to the same as the number of threads to ensure threads don't wait on each other.
Max Wait (ms) 在連接配接池中取回連接配接最大等待時間
中文:如果在試圖檢索連接配接過程中(取回連接配接)超過所設定期限,連接配接池抛出一個錯誤
Time Between Eviction Runs (ms) 疏散時間
中文:在空閑對象驅逐線程運作期間,可以休眠的毫秒數。當非正值時,将運作無空閑對象驅逐器線程。(預設為“60000”,1分鐘)(如果目前連接配接池中某個連接配接在空閑了time Between Eviction Runs Millis時間後任然沒有使用,則被實體性的關閉掉。)
原文:The number of milliseconds to sleep between runs of the idle object evictor thread. When non-positive, no idle object evictor thread will be run. (Defaults to " 60000 ", 1 minute)
Auto Commit 自動送出sql語句
中文:打開或關閉連接配接的自動送出。
(3) Connection Validation by Pool
這是Jmeter用來檢驗資料庫連接配接是否有效的一種機制,超過5秒沒有使用的話,就會用validation query去測試下這個連接配接是否有效
Test While Idle 當空閑的時候測試連接配接是否斷開
中文:測試連接配接池的空閑連接配接,驗證查詢将會被使用去測試。
原文:Test idle connections of the pool, see BasicDataSource.html#getTestWhileIdle . Validation Query will be used to test it.
Soft Min Evictable Idle Time(ms)
中文:最少的時間連接配接可能在池中閑置,然後才有資格被閑置的對象驅逐出去,額外的條件是至少在池中保持連接配接。預設值為5000(5秒)
原文:Minimum amount of time a connection may sit idle in the pool before it is eligible for eviction by the idle object evictor, with the extra condition that at least minIdle connections remain in the pool. See BasicDataSource.html#getSoftMinEvictableIdleTimeMillis . Defaults to 5000 (5 seconds)
(4) Database Connection Configuration
Database URL: jdbc:mysql://伺服器位址:3306/資料庫名
(比如:jdbc:mysql://ip:3306/資料庫名?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true)
備注:“&allowMultiQueries=true” 這句話的意思呢 是為了在JDBC中執行多條select語句的時候用的!
JDBC Driver class:資料庫JDBC驅動類名:com.mysql.jdbc.Driver
Username:資料庫連接配接使用者名
password:資料庫連接配接密碼
例如(上面url或class如有問題,可試一試下面的):
Database URL: jdbc:mysql://localhost:3306/information_schema?serverTimezone=GMT%2B8
JDBC Driver class: com.mysql.cj.jdbc.Driver
Username:root
password:xxx
不同資料庫具體的填寫方式,可以參考下面的表格:
Datebase | Driver class | Database URL |
MySQL | com.mysql.jdbc.Driver | jdbc:mysql://host:port/{dbname} |
PostgreSQL | org.postgresql.Driver | jdbc:postgresql:{dbname} |
Oracle | oracle.jdbc.driver.OracleDriver | jdbc:oracle:thin:user/pass@//host:port/service |
Ingres (2006) | ingres.jdbc.IngresDriver | jdbc:ingres://host:port/db[;attr=value] |
MSSQL | com.microsoft.sqlserver.jdbc.SQLServerDriver 或者 net.sourceforge.jtds.jdbc.Driver | jdbc:sqlserver://IP:1433;databaseName=DBname jdbc:jtds:sqlserver://localhost:1433/"+"library" |
填寫後大緻如下:

三、配置JDBC Request
重要的參數說明:
- Variable Name:資料庫連接配接池的名字,需要與JDBC Connection Configuration的Variable Name Bound Pool名字保持一緻
- Query:填寫的sql語句未尾不要加“;”
- Parameter valus:參數值
- Parameter types:參數類型,可參考:Javadoc for java.sql.Types
- Variable names:儲存sql語句傳回結果的變量名
- Result variable name:建立一個對象變量,儲存所有傳回的結果
- Query timeout:查詢逾時時間
- Handle result set:定義如何處理由callable statements語句傳回的結果
執行到這裡,我們已經将資料從資料庫中原樣的查出來了,但具體如何之取出我們需要的資料呢,顯然,假如我們查詢的sql傳回的隻是一個資料,上面的方式已經可以滿足我們的需求的,如我們查詢資料的記錄數,
select count(*) from test
查詢出來的結果就是我們需要的内容,或者通過正規表達式的擷取即可擷取我們的内容。
但假如像上面那樣子,我們擷取出來的是多行資料,我們需要如何來對資料進行周遊,隻擷取出我們需要的資料呢?請看下面的分析。
每天一點點,感受自己存在的意義。