真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

MongoDB數(shù)據(jù)庫容量規(guī)劃是指什么-創(chuàng)新互聯(lián)

MongoDB數(shù)據(jù)庫容量規(guī)劃是指什么,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

創(chuàng)新互聯(lián)建站是工信部頒發(fā)資質(zhì)IDC服務(wù)器商,為用戶提供優(yōu)質(zhì)的電信內(nèi)江機(jī)房服務(wù)

MongoDB數(shù)據(jù)庫容量規(guī)劃是什么

我們討論的存儲,說到底都是基于操作系統(tǒng)之上的一個應(yīng)用軟件,而操作系統(tǒng)能利用的,無非是系統(tǒng)的存儲:磁盤、內(nèi)存、CPU cache等等。所以容量規(guī)劃的意義就是:按要存儲的數(shù)據(jù)特點,針對一段時間的數(shù)據(jù)量,對機(jī)器各個存儲的容量、性能及系統(tǒng)配置進(jìn)行合理預(yù)估。

通常這個問題在實際容量規(guī)劃中可以化簡為對內(nèi)存,硬盤容量和性能的預(yù)估。

下面我們就以MongoDB為例說一下容量預(yù)估的一些計算方法。我們通常的一個粗糙的要求是要將所有熱數(shù)據(jù)放到內(nèi)存中。這里的熱數(shù)據(jù)可能包括經(jīng)常訪問的數(shù)據(jù),索引和系統(tǒng)開銷。下面我們就這三個方面進(jìn)行說明:

常訪問的數(shù)據(jù)

根據(jù)不同的應(yīng)用場景,你可以對數(shù)據(jù)訪問情況進(jìn)行預(yù)估。比如用MongoDB保存帖子內(nèi)容,每個帖子大小為1k,目前有1億個帖子,每天新增100w個帖子,那么3個月后帖子量大概為2億,需要200G的硬盤空間。

每天新增的100w帖子是常訪問的,而可能我們每天活躍訪問的貼子為200w,也就是說另外100w是之前的老帖子。如果我們規(guī)劃給熱數(shù)據(jù)的內(nèi)存大小為 1G,那只能裝下100w數(shù)據(jù),裝不了200w數(shù)據(jù)。由于帖子訪問的隨機(jī)性,最壞的情況是我們每次訪問的數(shù)據(jù)都不在內(nèi)存中(比如先訪問了不在內(nèi)存中的 100w,加載到內(nèi)存中,再訪問剛剛被換到磁盤上的數(shù)據(jù),又需要再加載一次),需要進(jìn)行和PV相同次數(shù)的磁盤IO,災(zāi)難!好的情況我們也需要100w次 磁盤IO(比如先對在內(nèi)存中的100w數(shù)據(jù)進(jìn)行頻繁訪問,再對不在內(nèi)存中的100w數(shù)據(jù)進(jìn)行頻繁訪問),在訪問頻率均勻的情況下,每秒需要進(jìn)行大概12次 的磁盤IO。

那我們把規(guī)劃給熱數(shù)據(jù)的內(nèi)存大小調(diào)為2G,看看會如何,這時候一天200w熱數(shù)據(jù)正好能裝下。那么好的情況下,需要進(jìn)行 100w次磁盤IO(比如200w數(shù)據(jù)中的100w老數(shù)據(jù)全都在昨天的熱數(shù)據(jù)中,則只需要對100w數(shù)據(jù)進(jìn)行重新加載),在訪問頻率均勻的情況下,每秒需 要進(jìn)行大概12次的磁盤IO。最壞的情況下,需要進(jìn)行200w次磁盤IO(比如今天訪問的200w條數(shù)據(jù)和昨天的熱數(shù)據(jù)沒有重合),在訪問頻率均勻的情況 下,每秒需要進(jìn)行大概25次的磁盤IO。

MongoDB數(shù)據(jù)庫容量規(guī)劃是什么

同理,我們再增大內(nèi)存,會需要訪問的數(shù)據(jù)在內(nèi)存中的機(jī)率增大,從而減小磁盤IO的頻率。

上面說的是一個簡單例子,具體你可以根據(jù)自己的數(shù)據(jù)訪問特性進(jìn)行評估和計算,而且不僅要算平均IO,更重要的是巔峰IO。

同時不要忘了,MongoDB還會定時調(diào)用fsync將內(nèi)存中的臟頁flush到磁盤(默認(rèn)一分鐘一次),你可以根據(jù)你自己臟數(shù)據(jù)的量或者比例來評估每次的IO,然后你再考慮是否需要將fsync的頻率調(diào)低一點。

如果你還開啟了journaling log,那這個IO量也需要加進(jìn)去。

當(dāng)然,接下來的就是你的磁盤是否能夠承受最終的IO量,然后你可以考慮你是否需要使用更快的硬盤,是否需要RAID,是否需要換用SSD等等了。

索引量

索引和常訪問數(shù)據(jù)不同,索引要求全部放在內(nèi)存中,所以索引的容量計算就相對容易很多。通過MongoDB的db.stats()命令就能看到你當(dāng)前占用 的索引大小。比如上面的例子,現(xiàn)在1億條數(shù)據(jù)如果索引大小為5G的話,那么2億條的時候大概需要10G。所以內(nèi)存必須要裝下這10G索引。

系統(tǒng)開銷

MongoDB daemon的開銷基本可以理解為一個常數(shù),所以這里的系統(tǒng)開銷就主要是連接開銷。這取決于你的應(yīng)用特點。比如你較大的并發(fā)操作為100。也就是同時 100個連接與MongoDB相連。每個連接一個線程開銷為系統(tǒng)的stack size設(shè)置,默認(rèn)是10M,那就是1G(當(dāng)然你可以適當(dāng)調(diào)整這個值)。需要對數(shù)據(jù)進(jìn)行實時排序的話,需要再算上排序時的內(nèi)存開銷。

總結(jié)

當(dāng)然,上面講的是一個簡單的預(yù)估方法,我們不期望能夠通過計算得出真實的容量估算結(jié)果,畢竟互聯(lián)網(wǎng)產(chǎn)品的變化總是那么不可控。但是在部署前按業(yè)務(wù)情況進(jìn)行相關(guān)的容量預(yù)估是非常重要的。好的預(yù)估可以在金錢、性能和運(yùn)維成本上得到一個相對平衡的結(jié)果。

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,的支持。


本文名稱:MongoDB數(shù)據(jù)庫容量規(guī)劃是指什么-創(chuàng)新互聯(lián)
URL地址:http://weahome.cn/article/dpepih.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部