MongoDB sharding 集合不分片性能更高?
最近云上用戶用戶遇到一個(gè) sharding 集群性能問(wèn)題的疑惑,比較有代表性,簡(jiǎn)單分享一下
測(cè)試配置
- mongos x 2、shard x 3
- 測(cè)試1:集合不開啟分片,批量 insert 導(dǎo)入數(shù)據(jù),每個(gè) batch 100 個(gè)文檔
- 測(cè)試2:集合開啟分片,隨機(jī)生成 shardKey,chunk 已提前 split 好,能確保寫入均分到3個(gè)shard
測(cè)試結(jié)果
- 測(cè)試1:單個(gè) shard cpu 跑滿,insert qps 在 6w 左右
- 測(cè)試2:3個(gè) shard cpu 跑滿,insert qps 在 7w 左右(平均每個(gè)分片2.4w左右)
注:兩個(gè)測(cè)試?yán)?#xff0c;mongos 都不是瓶頸,能力足夠
從測(cè)試結(jié)果看,每個(gè)shard都承擔(dān) 1/3 的負(fù)載,的確達(dá)到橫向擴(kuò)張的目的,但為啥分片之后,單個(gè)shard的能力就下降了呢?如果是這樣,sharding的擴(kuò)展能力如何體現(xiàn)?
結(jié)果分析
這里核心的問(wèn)題在于 batch insert 在 mongos 和 mongod 上處理行為的差別
所以在上述測(cè)試中,不分片的單個(gè) shard 6w qps、與分片后每個(gè) shard 2.4w qps,實(shí)際上就是請(qǐng)求是否 batch 執(zhí)行的差別。
對(duì)應(yīng)用的影響
從上面的分析可以看出,batch 往分片的集合寫入時(shí),因?yàn)闊o(wú)法預(yù)知數(shù)據(jù)應(yīng)該分散到哪個(gè)分片,實(shí)際上往后端 shard 寫入時(shí),會(huì)失去 batch 的效果,但這個(gè)批量導(dǎo)入一般發(fā)生在數(shù)據(jù)導(dǎo)入階段,影響比較小。
原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
總結(jié)
以上是生活随笔為你收集整理的MongoDB sharding 集合不分片性能更高?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: “做好大数据测试,我是认真的!”
- 下一篇: 大家都关注的Serverless,阿里怎