測試是由同事完成的,這里只做收藏。
測試說明:
1、數據量為3kw記錄,每條記錄11個字段,一個為主鍵,主鍵為字符類型,類似:user****,后續為數值
其他10字段為字符類型,100字符,記錄長度大約為1KB
2、使用ycsb進行壓力測試。具體各類型參考以前文檔
3、三千萬數據,對目前數據庫都能緩存到DB中(后續測試緩存80%,50%,30%等情況下性能情況)
4、測試項包括:數據裝載,就是insert數據
ycsb的標准負載a、負載b、負載c、負載d、負載e、負載f測試
都采用64線程進行壓測,通過分析是最優的
mysql測試環境為innodb_buffer_pool_size=20G
mysql_100g為innodb_buffer_pool_size=100G
mongodb為cacheSizeGB=20G
mongodb_100g為cacheSizeGB=100G
負載a:read=0.5,update=0.5,insert=0,scan=0(無范圍查詢)
負載b:read=0.95,update=0.05,insert=0,scan=0(無范圍查詢)
負載c:read=100 ---純讀應用,scan=0(無范圍查詢)
負載d:read=0.95,insert=0.05,scan=0(無范圍查詢)
負載e:scan=0.95,insert=0.05,范圍查詢,范圍為100
負載f:read=0.5,readmodifywriteproportion=0.5(讀出記錄,然后修改記錄,然后寫回記錄)
各項指標測試結果:
- IOPS測試
| 數據庫類型 | ||||
| 測試類型 | mysql | mongodb | tokuMX | couchbase |
| insert | 13196.1154 | 77248.81715 | 36650.51286 | 92041.69321 |
| a | 17414.53382 | 120763.7097 | 56441.69009 | 171759.3308 |
| b | 68047.57887 | 99998.66668 | 98474.30477 | 159533.7361 |
| c | 65496.17721 | 96096.55782 | 96174.49901 | 97495.02775 |
| f | 16601.97431 | 83504.51759 | 58816.14856 | 112853.6551 |
| d | 66899.9244 | 100008.6674 | 97753.62177 | 101810.8761 |
| e | 2345.999594 | 2114.057191 | 2116.884482 | |
- 插入延遲
| 數據庫類型 | ||||
| 測試類型 | mysql | mongodb | tokuMX | couchbase |
| insert | 9683.304403 | 1658.783526 | 3490.779132 | 1337.107262 |
| d | 2238.196522 | 687.4064251 | 751.8563847 | 1246.501145 |
| e | 19863.49348 | 13568.54149 | 12914.24357 | |
- updsate延遲
| 數據庫類型 | ||||
| 測試類型 | mysql | mongodb | tokuMX | couchbase |
| a | 6840.743134 | 649.0976047 | 1670.448293 | 685.4414804 |
| b | 2260.907568 | 774.5944686 | 721.1753008 | 773.1773418 |
| f | 6583.488954 | 572.8773741 | 1198.842941 | 722.6498385 |
讀-修改-寫延遲
| 數據庫類型 | ||||
| 測試類型 | mysql | mongodb | tokuMX | couchbase |
| d | 7133.568479 | 1050.091246 | 1677.069403 | 1442.553442 |
- 范圍掃描延遲
| 數據庫類型 | |||
| 測試類型 | mysql | mongodb | tokuMX |
| e | 24474.38263 | 31060.48241 | 31075.847 |
- 存儲大小(GB)
| 數據庫類型 | ||||
| mysql | mongodb | tokuMX | couchbase | |
| 1千萬 | 19 | 4.2 | 8.5 | 11.2 |
結論:
1、所有NoSQL數據庫的插入OPS讀比MySQL強,其中couchbase最強,然后是mongoDB和tokuMX
2、所有NoSQL數據庫的插入延遲讀比MySQL小,其中couchbase最強,然后是mongoDB和tokuMX
3、讀延遲最多的是couchbase,不如MySQL
4、update延遲,NoSQL都比MySQL強
5、范圍掃描,MySQL比所有NoSQL強,由於couchbase測試問題未拿到數據(后續補充)
6、數據容量NoSQL數據庫比MySQL占空間小,依次為MySQL、couchbase、tokuMX、mongoDB
