成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

MongoDB之compact操作詳解

Forelax / 1741人閱讀

摘要:摘要操作步驟很多,但是可以有效減少磁盤(pán)使用量。關(guān)于操作,我列了幾個(gè)簡(jiǎn)單的。操作效果怎么樣減少了接近的磁盤(pán)空間,這個(gè)大小應(yīng)該與被刪除的文檔數(shù)量有關(guān)。操作步驟由于操作會(huì)阻塞的讀寫(xiě)操作,因此應(yīng)該對(duì)每個(gè)節(jié)點(diǎn)依次進(jìn)行操作。

摘要: compact操作步驟很多,但是可以有效減少磁盤(pán)使用量。

MongoDB與磁盤(pán)

當(dāng)Fundebug處理的數(shù)據(jù)越來(lái)越多,這導(dǎo)致MongoDB的磁盤(pán)使用量越來(lái)越多,增長(zhǎng)也越來(lái)越快。于是,我開(kāi)始定時(shí)刪除過(guò)期數(shù)據(jù),優(yōu)化算法減少冗余數(shù)據(jù)。但是,我發(fā)現(xiàn),單純刪除文檔不能減少M(fèi)ongoDB磁盤(pán)使用量。這是為什么呢?下面是官方文檔的解釋?zhuān)?/p>

對(duì)于WiredTiger存儲(chǔ)引擎(mongodb 3.2之后默認(rèn)使用):How do I reclaim disk space in WiredTiger?

The WiredTiger storage engine maintains lists of empty records in data files as it deletes documents. This space can be reused by WiredTiger, but will not be returned to the operating system unless under very specific circumstances.

也就是說(shuō),被刪除的文檔所占用的磁盤(pán)空間仍然由MongoDB保留,不會(huì)釋放。對(duì)于舊版MongoDB的MMAPv1存儲(chǔ)引擎,這一點(diǎn)也是一樣的。這樣做無(wú)可厚非,因?yàn)閿?shù)據(jù)庫(kù)將會(huì)不斷存儲(chǔ)新的文檔,它們可以利用之前保留的磁盤(pán)空間。

但是,如果你刪除了很多文檔,需要MongoDB釋放磁盤(pán)空間,應(yīng)該如何做呢?正如文檔所述,對(duì)于WiredTiger存儲(chǔ)引擎,我們可以使用compact操作來(lái)實(shí)現(xiàn)。

To allow the WiredTiger storage engine to release this empty space to the operating system, you can de-fragment your data file. This can be achieved using the compact command.
關(guān)于compact操作

compact操作會(huì)重新整理碎片化的磁盤(pán),釋放多余的空間。

Rewrites and defragments all data and indexes in a collection. On WiredTiger databases, this command will release unneeded disk space to the operating system.

關(guān)于compact操作,我列了幾個(gè)簡(jiǎn)單的Q&A。

compact是否會(huì)阻塞數(shù)據(jù)庫(kù)讀寫(xiě)?會(huì)!因此不能在高峰期進(jìn)行compact操作;對(duì)于復(fù)制集,應(yīng)該對(duì)每個(gè)節(jié)點(diǎn)依次進(jìn)行compact操作。

compact是否可以釋放磁盤(pán)空間?對(duì)于WiredTiger,是可以的;但是對(duì)于WiredTiger存儲(chǔ)引擎,并不會(huì),多余的磁盤(pán)空間仍然會(huì)保留給MongoDB。

compact操作是否會(huì)占用額外的磁盤(pán)空間?根據(jù)我的觀(guān)察,基本上不會(huì)。

paddingFactor應(yīng)該設(shè)為多少?我設(shè)置的值是1.1,這樣可以為每個(gè)文檔留一些多余空間,提高修改性能。這個(gè)值可以根據(jù)實(shí)際需要進(jìn)行設(shè)置。

compact操作需要多少時(shí)間?一個(gè)400G的復(fù)制集節(jié)點(diǎn),我花了不到1個(gè)小時(shí)。這樣時(shí)間應(yīng)該與數(shù)據(jù)量大小有關(guān)。

compact操作效果怎么樣?減少了接近50%的磁盤(pán)空間,這個(gè)大小應(yīng)該與被刪除的文檔數(shù)量有關(guān)。

compact操作步驟

由于compact操作會(huì)阻塞MongoDB的讀寫(xiě)操作,因此應(yīng)該對(duì)每個(gè)節(jié)點(diǎn)依次進(jìn)行操作。另外,MongoDB復(fù)制集的標(biāo)準(zhǔn)維護(hù)流程是將Secodary節(jié)點(diǎn)暫定,使用多帶帶的端口啟動(dòng)獨(dú)立的mongo實(shí)例進(jìn)行操作,這樣可以復(fù)制集完全隔離。

我們Fundebug的MongoDB集群運(yùn)行在Docker中,因此操作步驟稍微簡(jiǎn)單一些,可以為大家提供參考。

Secondary節(jié)點(diǎn)

關(guān)閉mongodb容器

sudo docker stop mongo

啟動(dòng)獨(dú)立的臨時(shí)mongodb容器

sudo docker run -it -d -p 37017:27017 -v /data/db:/data/db --name mongo_tmp mongo:3.2

執(zhí)行compact命令

mongo 127.0.0.1:37017
db.runCommand( { compact : "events",paddingFactor: 1.1 } )

重啟mongodb節(jié)點(diǎn)

sudo docker rm -f mongo_tmp
sudo docker start mongo
Primary節(jié)點(diǎn)

將Primary節(jié)點(diǎn)變?yōu)镾econdary節(jié)點(diǎn)

rs.stepDown()

按照secondary節(jié)點(diǎn)進(jìn)行操作

參考

MongoDB文檔:compact

MongoDB文檔:Perform Maintenance on Replica Set Members

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/19257.html

相關(guān)文章

  • Java NIO Buffer(緩沖區(qū))

    摘要:一緩沖區(qū)介紹用于和交互。的容量,位置,上限緩沖區(qū)實(shí)質(zhì)上就是一塊內(nèi)存,用于寫(xiě)入數(shù)據(jù),也供后續(xù)再次讀取數(shù)據(jù)。在每個(gè)類(lèi)中,方法用于分配緩沖區(qū)。沒(méi)有這句話(huà)會(huì)報(bào)錯(cuò)將此緩沖區(qū)的位置重置為先前標(biāo)記的位置。返回此緩沖區(qū)的限制。 一 Buffer(緩沖區(qū))介紹 Java NIO Buffers用于和NIO Channel交互。 我們從Channel中讀取數(shù)據(jù)到buffers里,從Buffer把數(shù)據(jù)寫(xiě)入到...

    gitmilk 評(píng)論0 收藏0
  • mongodb 存儲(chǔ)

    摘要:存儲(chǔ)概念是分類(lèi)的存儲(chǔ)來(lái)是數(shù)據(jù)文件的大小。這個(gè)操作會(huì)禁止數(shù)據(jù)的訪(fǎng)問(wèn),所以不能夠輕易地執(zhí)行。有兩個(gè)明顯的缺點(diǎn)。必須禁止訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)一段時(shí)間。需要同等的硬盤(pán)及??梢酝ㄟ^(guò)構(gòu)建來(lái)防止空間占據(jù)過(guò)大。 mongodb 存儲(chǔ) db.stats() { db : exemplum, collections : 10, objects : 110857, avgObjSize : 239...

    PAMPANG 評(píng)論0 收藏0
  • mongodb

    摘要:并依賴(lài)于提供的機(jī)制提供高數(shù)據(jù)可靠性,目前支持單機(jī)事務(wù)。源通知目標(biāo)開(kāi)始同步數(shù)據(jù)源收到發(fā)送的命令后,會(huì)向目標(biāo)發(fā)送的命令,通知目標(biāo)開(kāi)始遷移數(shù)據(jù)真正的數(shù)據(jù)遷移由目標(biāo)主動(dòng)發(fā)起。源收到的結(jié)果,整個(gè)數(shù)據(jù)遷移的步驟完成。 本文分兩部分,分布式和單機(jī)。單個(gè)db的存儲(chǔ)引擎,物理和數(shù)據(jù)存儲(chǔ)簡(jiǎn)介,事務(wù)實(shí)現(xiàn)等。分布式架構(gòu),分布式涉及的復(fù)制集,分片等可靠性和擴(kuò)展性保障。 第一部分 單機(jī)存儲(chǔ)引擎介紹mondod 引...

    lscho 評(píng)論0 收藏0
  • MongoDB復(fù)合索引詳解

    摘要:摘要對(duì)于的多鍵查詢(xún),創(chuàng)建復(fù)合索引可以有效提高性能。不妨通過(guò)一個(gè)簡(jiǎn)單的示例理解復(fù)合索引。但是,使用的是與的復(fù)合索引即根據(jù)索引去查詢(xún)文檔,不需要過(guò)濾??梢酝茰y(cè),應(yīng)該是索引的問(wèn)題導(dǎo)致的。 摘要: 對(duì)于MongoDB的多鍵查詢(xún),創(chuàng)建復(fù)合索引可以有效提高性能。 showImg(https://segmentfault.com/img/bV5PFN?w=800&h=450); 什么是復(fù)合索引? 復(fù)...

    qieangel2013 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

Forelax

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<