Mongodb

塊大小是否是可以與分片鍵值關聯的最大數據大小的限制?

  • April 2, 2017

我還沒有讀過關於塊大小和與集合中單個分片鍵值關聯的數據大小之間的關係,因此,另一種提問方式可能是,分片鍵可以跨越多個塊嗎?

一個分片鍵可以跨越多個塊嗎?

不,MongoDB 中的是一個或多個分片鍵值的邏輯連續範圍。唯一的分片鍵值不能存在於多個塊範圍內,但許多文件可能具有相同的分片鍵。您選擇的分片鍵的基數決定了可以在塊範圍內表示的文件的粒度(最低粒度是表示單個分片鍵值的塊)。

分片鍵和塊之間的關係如下圖所示,來自 MongoDB 文件,解釋了選擇分片鍵

分片鍵與塊範圍

塊大小是否是可以與分片鍵值關聯的最大數據大小的限制

不。塊大小決定了預期由塊範圍表示的文件的大致大小(預設情況下,64MB)。如果觀察到一個塊範圍接近(或可能超過)配置的塊大小,MongoDB 將嘗試將該單個塊拆分為多個塊,這些塊代表分片鍵的較小連續範圍。塊拆分更新分片集群元數據,但不涉及在分片之間複製文件。MongoDB 的分片集群平衡器使用遷移門檻值來確定何時適合在可用分片之間遷移塊和相關文件。

如果 MongoDB 無法拆分超過配置的塊大小的塊(例如,由於低基數 shard key),則該塊將被標記為jumbo。巨型塊是有問題的,因為它們會導致分片集群內的數據分佈不平衡:平衡器將不再嘗試拆分或遷移巨型塊。

預設塊大小適用於大多數部署,但是如果有更適合您的部署或案例的設置,則可以修改塊大小。較小的塊大小將導致更頻繁的塊拆分和遷移活動;較大的塊大小將導致單個塊操作(例如遷移)的 I/O 更多。修改塊大小的文件記錄了幾個值得在更改此設置之前查看的注意事項。

引用自:https://dba.stackexchange.com/questions/168882