測試環境:
操作系統:CentOS6.5_x64
Mysql版本:5.1.71
mysqlslap是設計來模擬多個客戶端負載MySQL服務器,並報告每個階段的時間診斷程序。
mysqlslap運行在三個階段:
1.創建模式,表,以及可選的存儲程序或數據,用於測試。這個階段使用單一客戶端連接。
2.運行負載測試。這個階段可以使用很多客戶端連接。
3.清理(斷開連接,如果指定刪除表)。這個階段使用單一客戶端連接。
Mysql數據庫默認最大連接數是100,一般生產環境是不夠的,在my.cnf [mysqld]下添加 max_connections=1024 增加到1024,重啓Mysql。
Mysql默認使用是MyISAM存儲引擎,如下查看:
[root@localhost ~]# mysqlslap --concurrency=100,200 --iterations=1 --auto-generate-sql --auto-generate-sql-load-type=mixed --number-int-cols=20 --number-char-cols=30 --engine=innodb --create-schema=test --number-of-queries=1024 --host=localhost --user=root --password=123.com --debug-info
參數說明:
--concurrency= #併發連接數量(可逗號隔開),例如:concurrency=100,200
--engines= #要測試的存儲引擎,逗號隔開;
--iterations= #運行多少次後,得到結果;
--auto-generate-sql #自動生成SQL腳本來測試;
--auto-generate-sql-load-type= #測試類型是read還是write,還是mixed(混合);
--number-of-queries= #執行查詢的次數;
--number-int-cols= #測試表int字段類型的數量;
--number-char-cols= #測試表的char類型字段的數量;
--create-schema =test #創建測試的數據庫;
--debug-info #輸出CPU、內存等系統相關信息;
測試說明:模擬測試兩次讀寫併發,第一次100,第二次200,自動生成SQL腳本,測試表包含20個init字段,30個char字段,每次執行1024查詢請求。測試引擎分別是myisam,innodb,memory。
MyISAM測試
InnoDB測試
Memory測試
測試結果說明:
Myisam第一次100客戶端同時發起增查用1.913/s,第二次200客戶端同時發起增查用1.49/s
Innodb第一次100客戶端同時發起增查用2.94/s,第二次200客戶端同時發起增查用3.683/s
Memory第一次100客戶端同時發起增查用1.963/s,第二次200客戶端同時發起增查用1.599/s
由此可見MyISAM存儲引擎處理性能是最好的,也是最常用的,但不支持事務。
InonDB存儲引擎提供了事務型數據引(ACID),在事務型引擎裏使用最多的。具有事務回滾,系統修復等特點。
Memory存儲引擎數據都在內存中進行操作的,默認使用HASH索引,具有很高的插入、查詢處理效率,因爲數據存在內存中,當Mysql重啓或關閉機器這些數據都會消失。 在本次測試中未能體現其優勢。不支持事務。
上述數據僅供參考,根據本身業務需求選擇合適存儲引擎,需要注意的是服務器的性能不同直接影響到測試的結果,應多次測試,求平均值。