最近一個項目須要數據庫有較大的吞吐量,由於項目要求的訪問量和數據量較大,決定採用一個數據庫中間件來對數據庫進行管理。通過一番查詢,決定使用阿里的一個開源項目-mycat。由於mycat基於mysql,是針對磁盤的讀與寫,故在讀寫速度上理論上會小於等於mysql。爲求嚴謹,在這以前我用java編寫程序進行了測試,採用了基本的優化,如鏈接池測試結果以下:java
engines:innodb,mysql:20線程,單條插入,速度:300-400/smysql
engines:innodb,mycat控制3個數據源,100個數據庫,向一張表插入數據,20線程,單條插入,速度:300-400/ssql
(數據不穩定的緣由是由於都是靠我本身掐時間用計算器算的-。-)數據庫
這個速度是不知足需求的,後來一個同事想起了曾經接觸過的一個基於mysql的數據引擎-----TokuDB。網上關於TokuDB的一條說明讓我怦然心動:「插入性能提高9倍」。=。=誠然我是不信的,我要本身試一下。因而我裝上了tokudb引擎進行了測試(安裝方法在我另外一篇文章中)。以下:apache
engines:tokudb,mysql:20線程,單條插入,速度:600-900/s性能
engines:tokudb,mycat控制1個數據源,50個數據庫,向一張表插入數據,20線程,單條插入,速度:600-900條/s測試
從我粗略的測試數據能夠看到,tokudb的插入性能提高實際是沒有9倍的,這個9倍我估計是峯值。可是2倍的性能提高仍是很不錯的。要達到客戶所說的1200+,至少是看到了但願。優化
固然,我這個粗略的數據我是不太滿意的,因而我決定用專業的壓力測試軟件----jmeter進行測試。然而,測試的結果讓我大是汗顏。線程
jmeter能夠到https://archive.apache.org/dist/jmeter/binaries/ 進行下載,zip版本直接解壓便可(若是不行可能須要配置環境變量),點擊bin目錄下的jmeter.bat運行。中間件
如何進行jdbc的測試呢?步驟以下:
1.在測試計劃頁面點擊瀏覽,加載進入數據庫的驅動包,我使用的mysql,驅動包即mysql-connector-java-5.1.26-bin.jar。
2.在測試計劃處右鍵,新建一個線程組。線程組頁面能夠配置線程數,我設置成了20,ramp-up period參數的意思是全部的線程將在多少秒內啓動,設置爲1秒,循環次數即線程會循環執行多少次。
3.在線程組上點擊右鍵,添加-配置原件,選擇JDBC Connection Configuration.配置以下:
4.在線程組上點擊右鍵-添加-sampler-JDBC Request.配置以下:
5.點擊線程組,添加兩個監聽器。「圖形結果」 和 「查看結果樹」。用於監控執行狀況。
6.點擊菜單欄 運行-啓動便可。
下面公佈讓我汗顏的測試結果:
mycat:
mysql:
吞吐量每秒才200條!!!什麼鬼!!不過也確實證實了mycat速度上確實是小於等於mysql這一觀點...
我只能把速度的下降歸結於jmeter這個軟件上....但願有知道原理的大神能夠告知一下緣由=.=