欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MongoDB的chunk詳解

 更新時間:2021年04月16日 11:18:45   作者:DBA隨筆  
這篇文章主要介紹了MongoDB的chunk的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用MongoDB數(shù)據(jù)庫,感興趣的朋友可以了解下

    MongoDB中,在使用到分片的時候,常常會用到chunk的概念,chunk是指一個集合數(shù)據(jù)中的子集,也可以簡單理解成一個數(shù)據(jù)塊,每個chunk都是基于片鍵的范圍取值,區(qū)間是左閉右開。例如,我們的片鍵是姓名的第二個字母,包含了A-Z這26中可能,理想情況下,劃分為26個chunk,其中每個字母開頭的姓名記錄即為一個chunk。

    在數(shù)據(jù)寫入的時候,mongos根據(jù)片鍵shard key的值來寫入對應(yīng)的chunk中,chunk可以表示的最小范圍是單個唯一的shard key的值,只包含具體的單個片鍵值文檔的chunk不能被分割,這個也比較容易理解,如果某個chunk只包含一個片鍵的值,如果對它進(jìn)行分割,則代表一個片鍵值映射了2個chunk,下次遇到這個片鍵的文檔時,mongos就不知道應(yīng)該存放在哪個chunk當(dāng)中了。

chunk的大小如何確定???

    在MongoDB中,chunk的默認(rèn)大小是64MB,可以增加或者減少chunk的大小。

    chunk的大小不宜過小,如果chunk過小,好處是可以讓數(shù)據(jù)更加均勻的分布,但是會導(dǎo)致chunk之間頻繁的遷移,有一定的性能開銷;同樣的,chunk的大小不宜過大,過大的chunk size會導(dǎo)致數(shù)據(jù)分布不均勻,

chunk的分裂

    當(dāng)某個chunk的值達(dá)到了chunk所能表示的最大值的時候,這個時候chunk不能無限增長,需要通過分割的方法來減少chunk的大小,例如一個64MB的chunk分割成2個32MB的chunk,這樣雖然增加了chunk的數(shù)量,但是帶來的收益是單個chunk的縮小。

chunk的遷移

    在分片+復(fù)制集的架構(gòu)中,當(dāng)某個服務(wù)器上的數(shù)據(jù)記錄不停的增多,它上面分割的chunk就會變多,當(dāng)集群中每個服務(wù)器上的chunk數(shù)量嚴(yán)重失衡的時候,mongodb會自動進(jìn)行chunk的遷移工作,這個自動遷移的工作,是通過balancer來進(jìn)行的。如果balancer發(fā)現(xiàn)各個shard之間的chunk數(shù)差異超過了提前規(guī)定的閾值,則會進(jìn)行chunk的遷移工作,如下:

也就是從上面的狀態(tài)變成下面的狀態(tài)。每個小塊代表一個chunk。

MongoDB自動觸發(fā)遷移的閾值表如下:

chunk數(shù)量:   <20,遷移閾值:2

chunk數(shù)量:20~79,遷移閾值:4

chunk數(shù)量:   >80,遷移閾值:8

chunk的遷移一般使用鎖來實(shí)現(xiàn),從MongoDB3.4版本起,chunk的遷移分為7個步驟:

1、balancer進(jìn)程將moveChunk的命令發(fā)送到源shard中

2、源shard使用內(nèi)部moveChunk命令開始移動,遷移過程中,該chunk的操作依舊在源shard上進(jìn)行,源shard依舊負(fù)責(zé)該chunk的寫入操作

3、目標(biāo)shard開始創(chuàng)建所需索引

4、目標(biāo)shard開始請求chunk中的文檔并開始接收數(shù)據(jù)的復(fù)制

5、接收完源shard的最后一個文檔之后,目標(biāo)shard啟動一個同步進(jìn)程,這個進(jìn)程會拉取遷移期間的日志,將遷移期間對該chunk的操作更新到目標(biāo)chunk中。

6、當(dāng)完全同步時,源shard連接到config數(shù)據(jù)庫并更新chunk的位置元數(shù)據(jù)。

7、完成數(shù)據(jù)更新后,一旦在源shard上沒有對該chunk的操作,源shard會異步刪除chunk。當(dāng)然,用戶可以設(shè)置_waitforDelete參數(shù)為true,讓源shard在chunk遷移完成后同步刪除chunk數(shù)據(jù)

通常情況下,chunk遷移由下面三種場景觸發(fā):

1、多個shard上分布不均勻

2、用戶調(diào)用removeShard之后,被移除的shard上的chunk就要被遷移到其他的shard上

3、MongoDB的shard tag功能,可以對shard或者shard  key range打標(biāo)簽,系統(tǒng)會自動將對應(yīng)的range的數(shù)據(jù)遷移到擁有相同tag的shard上。

以上就是MongoDB的chunk詳解的詳細(xì)內(nèi)容,更多關(guān)于MongoDB chunk的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • mongodb設(shè)置后臺運(yùn)行的方法

    mongodb設(shè)置后臺運(yùn)行的方法

    這篇文章主要介紹了mongodb設(shè)置后臺運(yùn)行的方法,本文同時給出了關(guān)閉已在后臺運(yùn)行mongodb的方法,需要的朋友可以參考下
    2014-09-09
  • ?PostgreSQL?與MongoDB使用對比分析

    ?PostgreSQL?與MongoDB使用對比分析

    這篇文章主要介紹了為什么?PostgreSQL?能代替?MongoDB?,需要的朋友可以參考下
    2023-12-12
  • mongoDB實(shí)現(xiàn)分頁的方法

    mongoDB實(shí)現(xiàn)分頁的方法

    這篇文章主要為大家詳細(xì)介紹了mongoDB實(shí)現(xiàn)分頁的兩種方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • MongoDB操作類封裝實(shí)例代碼

    MongoDB操作類封裝實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于MongoDB操作類封裝的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用MongoDB具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Navicat Premium連接mongodb詳細(xì)教程

    Navicat Premium連接mongodb詳細(xì)教程

    這篇文章主要介紹了Navicat Premium連接mongodb詳細(xì)教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • mongodb如何對文檔內(nèi)數(shù)組進(jìn)行過濾的方法步驟

    mongodb如何對文檔內(nèi)數(shù)組進(jìn)行過濾的方法步驟

    這篇文章主要介紹了mongodb如何對文檔內(nèi)數(shù)組進(jìn)行過濾的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10
  • MongoDB添加仲裁節(jié)點(diǎn)報(bào)錯:replica set IDs do not match的解決方法

    MongoDB添加仲裁節(jié)點(diǎn)報(bào)錯:replica set IDs do not match的解決方法

    這篇文章主要給大家介紹了關(guān)于MongoDB添加仲裁節(jié)點(diǎn)報(bào)錯:replica set IDs do not match的解決方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • MongoDB4.28開啟權(quán)限認(rèn)證配置用戶密碼登錄功能

    MongoDB4.28開啟權(quán)限認(rèn)證配置用戶密碼登錄功能

    這篇文章主要介紹了MongoDB4.28開啟權(quán)限認(rèn)證配置用戶名和密碼認(rèn)證登錄,本文分步驟給大家介紹開啟認(rèn)證登錄的方法,需要的朋友可以參考下
    2022-01-01
  • MongoDB數(shù)據(jù)庫兩階段提交實(shí)現(xiàn)事務(wù)的方法詳解

    MongoDB數(shù)據(jù)庫兩階段提交實(shí)現(xiàn)事務(wù)的方法詳解

    這篇文章主要介紹了MongoDB數(shù)據(jù)庫兩階段提交實(shí)現(xiàn)事務(wù)的方法,結(jié)合實(shí)例形式詳細(xì)分析了MongoDB數(shù)據(jù)庫事務(wù)提交、回滾、撤銷等操作的原理、實(shí)現(xiàn)方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2018-08-08
  • PHP中安裝使用mongodb數(shù)據(jù)庫

    PHP中安裝使用mongodb數(shù)據(jù)庫

    最近有個項(xiàng)目,需要用php操作mongoDb數(shù)據(jù),所以了解下mongoDb為此整理了下,有需要的小伙伴可以參考下
    2015-12-12

最新評論