mongodb数据库,批量插入性能测试记录
spring boot 框架下,操作mongodb數據庫
maven:spring-data-mongodb:2.1.3.RELEASE
mongo數據庫用的是本地的mongo,所以環境不一樣,可能結果不一樣。但趨勢應該是一樣的。
測試保證每次批量插入時,庫里的數據量都是一樣的,大概是50萬左右。
每條數據大概15個字段左右,存的都是普通的數據,沒有過長的數據。每條數據轉換成行數據,大概就是100字節左右。
除了id索引外,還有兩個字段有索引。
簡易代碼如下:
//CheckedData是存入mongo對應的實體類 List<CheckedData> checkedDataList = new ArrayList<>(); checkedDataList.add(...); long start01 = System.currentTimeMillis(); mongoTemplate.insert(checkedDataList, CheckedData.class); long start02 = System.currentTimeMillis(); log.info("每次插入時間:"+(start02-start01));我批量上傳,每批list的大小分為1條,100條,500條,1000條,2000條,5000條,10000條,15000條,30000條這些維度去試的。
結果如下:
1、批量上傳1條,其實就是單條插入,插入時間基本在1ms~5ms內
2、批量上傳100條,插入時間基本在10ms~20ms內
3、批量上傳500條,插入時間基本在50ms~60ms內
4、批量上傳1000條,插入時間基本在400ms~450ms內
5、批量上傳2000條,插入時間基本在800ms~900ms內
6、批量上傳5000條,插入時間基本在1100ms~1200ms內
7、批量上傳10000條,插入時間基本在1600ms~1700ms內
8、批量上傳15000條,插入時間基本在2100ms~2300ms內
9、批量上傳30000條,插入時間基本在3900ms~4000ms內
根據上面的測試,如果我們需求是插入30萬條數據,那么批量插入不同的條數,對應的時間如下,我們取上面時間區間的最大值計算:
300000數據,如果每批1條,按1條1ms算,那么共花費1*300000ms=300000ms;
如果每批100個,那么需要3000批,即花費3000*20ms=60000ms;
如果每批500個,那么需要600批,即花費600*60ms=36000ms;
如果每批1000個,那么需要300批,即花費300*450ms=135000ms;
如果每批2000個,那么需要150批,即花費150*900ms=135000ms;
如果每批5000個,那么需要60批,即花費60*1200ms=72000ms;
如果每批10000個,那么需要30批,即花費30*1700ms=51000ms;
如果每批30000個,那么需要10批,即花費10*4000ms=40000ms;
結論:
綜上,500條左右是最優批量插入的條數,
單條插入是最慢的,
超過1000條會變慢許多,
但到了30000條一批,速度又會快起來,
所以如果內存足夠大,服務器足夠好,而要插入的數據又特別多的時候,一批30000條也是可以的。
以上數據僅僅是在我的電腦上測試的,可能會有誤差,僅供參考。
總結
以上是生活随笔為你收集整理的mongodb数据库,批量插入性能测试记录的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php培训出生做微电影网站的,微电影分享
- 下一篇: CoreAnimation编程指南(简介