<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

        mongodbsharding原理學(xué)習(xí)與試用(六)之chunk手動(dòng)切割

        來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-09 09:45:15
        文檔

        mongodbsharding原理學(xué)習(xí)與試用(六)之chunk手動(dòng)切割

        mongodbsharding原理學(xué)習(xí)與試用(六)之chunk手動(dòng)切割:1. 手動(dòng)切割chunk主要是兩個(gè)函數(shù)splitAt(fullname,middle)與splitFind(fullname,find). fullname指定哪個(gè)庫的哪個(gè)集合。middle與find都是條件,代表你想手動(dòng)切割哪個(gè)chunk. 需要注意的是條件必須包含片鍵,不然報(bào)錯(cuò),如下圖。 這兩個(gè)函數(shù)不同的是: 1.
        推薦度:
        導(dǎo)讀mongodbsharding原理學(xué)習(xí)與試用(六)之chunk手動(dòng)切割:1. 手動(dòng)切割chunk主要是兩個(gè)函數(shù)splitAt(fullname,middle)與splitFind(fullname,find). fullname指定哪個(gè)庫的哪個(gè)集合。middle與find都是條件,代表你想手動(dòng)切割哪個(gè)chunk. 需要注意的是條件必須包含片鍵,不然報(bào)錯(cuò),如下圖。 這兩個(gè)函數(shù)不同的是: 1.

        1. 手動(dòng)切割chunk主要是兩個(gè)函數(shù)splitAt(fullname,middle)與splitFind(fullname,find). fullname指定哪個(gè)庫的哪個(gè)集合。middle與find都是條件,代表你想手動(dòng)切割哪個(gè)chunk. 需要注意的是條件必須包含片鍵,不然報(bào)錯(cuò),如下圖。 這兩個(gè)函數(shù)不同的是: 1.1 spli

        1. 手動(dòng)切割chunk主要是兩個(gè)函數(shù)splitAt(fullname,middle)與splitFind(fullname,find). fullname指定哪個(gè)庫的哪個(gè)集合。middle與find都是條件,代表你想手動(dòng)切割哪個(gè)chunk. 需要注意的是條件必須包含片鍵,不然報(bào)錯(cuò),如下圖。

          

        這兩個(gè)函數(shù)不同的是:

         1.1 splitAt利用middle這個(gè)條件找到對(duì)應(yīng)的chunk,并以這個(gè)條件所查詢到的第一條結(jié)果為分隔點(diǎn),把原先的chunk分隔成兩部分。

          (一)在手動(dòng)切隔之前,sar總共有三個(gè)塊。如下圖

          

          (二)執(zhí)行切割命令

          

          之后chunks的分布如下圖

          

          可以看出,執(zhí)行之后,將第二個(gè)chunk,香港虛擬主機(jī),按照{(diào)_id:ObjectId("50dc0790525e4314024b79d0")}這個(gè)值為分隔點(diǎn)分隔成第2,3兩塊。

         1.2 函數(shù)splitFind,官網(wǎng)解釋是將找到的第一個(gè)chunk分隔成size大小相等的兩個(gè)chunk.但是我在測(cè)試過程中發(fā)現(xiàn)并不是這么回事。版本是2.2.2

          (一)準(zhǔn)備數(shù)據(jù)。向一個(gè)新集合插入250W條有規(guī)律的數(shù)據(jù)。如下圖。字段name的值末尾是一個(gè)自增的數(shù)字。

          

          (二)數(shù)據(jù)插入之后,集合的分塊情況如下圖。

          

          (三)我們可以看下,第一塊最后一條數(shù)據(jù)是什么。

          

          (四)可以看到,第一塊最后一條數(shù)據(jù)的name值是"habc780335".也就是說第一塊有78W條數(shù)據(jù)之多。現(xiàn)在將第一塊分成兩塊。使用splitFind()函數(shù)。

          

          (五)name值為"habc19"肯定是在第一塊中。因?yàn)榘垂倬W(wǎng)所說,應(yīng)該將第一塊分成size大小相等的兩塊。可實(shí)際上呢?

          

          (六)如上圖,的確是將原先的第一塊分成了兩塊。第二塊最后一條的ID值就是原先第一塊最后一條的ID值。但第1,2這兩塊size大小是相等的嗎?如下圖。

          

          (七)如上圖。第一塊的最后一條數(shù)據(jù)實(shí)際上就是第一條數(shù)據(jù)。這說明第一塊實(shí)際上只有一條數(shù)據(jù)。很顯然這兩塊的size是不相等的。真實(shí)情況究竟是什么呢 ???

        2. 今天在將一個(gè)已被移除的shard重新添加進(jìn)來的時(shí)候,出現(xiàn)了問題。特記錄下來。

          問題:將一個(gè)shard移除后,我沒有停掉這個(gè)shard。后來為了測(cè)試我又把它添加進(jìn)來。db.runCommand({addshard:"hostname:port"}); 操作提示成功。也開始了遷移數(shù)據(jù)。等遷移完成之后,我進(jìn)行查詢操作,發(fā)現(xiàn)操作失敗。錯(cuò)誤提示是“gotshardname different than what i had before” 。如下圖

          錯(cuò)誤提示是說,這個(gè)shard之前添加進(jìn)來的時(shí)候name被賦值為shard0001,現(xiàn)在再次添加進(jìn)來后name被賦值為shard0000.當(dāng)進(jìn)行查詢操作時(shí)發(fā)現(xiàn)這前后name不一樣。所以報(bào)錯(cuò)。我比較困惑的是,它是怎么知道這個(gè)shard之前的name值的。我找遍config庫下面的所有collection.都沒有發(fā)現(xiàn)有地方存儲(chǔ)shard之前的name值。僅僅只有shards這個(gè)集合存儲(chǔ)相關(guān)數(shù)據(jù)。但是存儲(chǔ)的都是此時(shí)此刻各個(gè)shard的情況。問了渡娘與google.沒有什么收獲。后來沒辦法,我想把這個(gè)shard再一次的remove掉后再添加進(jìn)來。可以不行。

          

          雖然操作提示是成功的,但是過了很久我發(fā)現(xiàn)數(shù)據(jù)根本就沒有遷移。查詢?nèi)罩荆l(fā)現(xiàn)了錯(cuò)誤提示。

          

          錯(cuò)誤提示仍是name值前后不一樣。后來在同事的提示下,我將這個(gè)shard重啟,重啟后發(fā)現(xiàn)問題解決了。

          分析:每個(gè)添加進(jìn)去的shard的name值不僅在config庫存儲(chǔ),同時(shí)各個(gè)shard也都存儲(chǔ)著這個(gè)值。不同的是,config庫的數(shù)據(jù)是落地的,但各個(gè)shard是緩存起來的。被移除的shard如果不重啟,那么這個(gè)name值就一直存在。有一點(diǎn)我不理解的是,既然name值存在,并且再次添加后name不一樣卻能添加成功,并且數(shù)據(jù)也都遷移過來了,香港虛擬主機(jī),只是查詢操作的時(shí)候才報(bào)錯(cuò)。難道遷移數(shù)據(jù)與查詢數(shù)據(jù)使用的是不同地方的name值? 有一點(diǎn)需要注意的是,雖然查詢操作失敗,但寫操作能夠成功。

          如何避免:db.runCommand({addshard:"hostname:port",name:"xxx"}) VS db,runCommand({addshard:"hostname:port"})。 在addshard的時(shí)候,我沒有指定name值,系統(tǒng)就使用默認(rèn)值從shard0000開始遞增。因此,在addshard時(shí)一定要手動(dòng)指定name值。

          

          

          

        ,服務(wù)器空間

        聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        mongodbsharding原理學(xué)習(xí)與試用(六)之chunk手動(dòng)切割

        mongodbsharding原理學(xué)習(xí)與試用(六)之chunk手動(dòng)切割:1. 手動(dòng)切割chunk主要是兩個(gè)函數(shù)splitAt(fullname,middle)與splitFind(fullname,find). fullname指定哪個(gè)庫的哪個(gè)集合。middle與find都是條件,代表你想手動(dòng)切割哪個(gè)chunk. 需要注意的是條件必須包含片鍵,不然報(bào)錯(cuò),如下圖。 這兩個(gè)函數(shù)不同的是: 1.
        推薦度:
        標(biāo)簽: 原理 學(xué)習(xí) 試用
        • 熱門焦點(diǎn)

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 亚洲五月综合网色九月色| 光棍天堂免费手机观看在线观看 | 精品人妻系列无码人妻免费视频| caoporm超免费公开视频| 免费国产在线观看老王影院| 亚洲成色WWW久久网站| 不卡视频免费在线观看| 亚洲日韩小电影在线观看| 亚洲久热无码av中文字幕| 日韩特黄特色大片免费视频| 国产精品亚洲一区二区三区久久| 特级精品毛片免费观看| 免费不卡中文字幕在线| www成人免费观看网站| 天天摸天天操免费播放小视频| 亚洲理论电影在线观看| 亚洲avav天堂av在线网毛片| 国产成人涩涩涩视频在线观看免费| 亚洲欧洲国产日韩精品| 台湾一级毛片永久免费| 亚洲免费在线视频| 国产成人精品久久免费动漫| 中文字幕亚洲精品无码| 久久福利资源网站免费看| 日韩亚洲国产综合高清| 亚洲人成在线免费观看| 亚洲国产精品无码久久| mm1313亚洲国产精品美女| 亚洲精品无码久久久久秋霞| 亚洲成?Ⅴ人在线观看无码| 精品免费视在线观看| 亚洲一级免费视频| 亚洲精品无码久久久| 国产综合成人亚洲区| 久久精品夜色国产亚洲av| 欧美好看的免费电影在线观看| 亚洲六月丁香六月婷婷色伊人 | 在线观看日本亚洲一区| 日韩一卡2卡3卡4卡新区亚洲 | 国产精品无码亚洲一区二区三区 | 亚洲高清国产拍精品青青草原|