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