您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關MONGODB如何創建索引大內存以及連鎖思維是怎樣的,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
創建MONGODB 的索引,屬于基本操作,但如果是一個有2T 的 collection 要加一個索引,也屬于基本操作,實際上量變產生質變,很多問題的考慮都不在那么簡單。
這時可能有有一個聲音,有你說的那么麻煩嗎? 我使用 background:true
并且這樣的處理的方式在后臺處理,不會對現有的系統產生鎖和任務無法處理的問題,缺點就是稍微比前臺操作耗時一點。
在創建索引的時候,可以通過下面的語句來查看相關的進度
db.currentOp(true).inprog.forEach(function(op){ if(op.msg!==undefined) print(op.msg) })
在MONGODB 4.2 系統上,在構建過程的開始和結束階段,索引構建僅對被索引的集合獲取獨占鎖,以保護元數據的更改。構建過程的其余部分使用后臺索引構建的生成行為,以便在構建期間最大化對集合的讀寫訪問。4.2盡管有更寬松的鎖定行為,但索引構建仍然可以生成高效的索引數據結構。mongodb4.2 系統應該是已經拋棄了 background的參數來創建搜索,根據一代比一代強的想法,自然是 background 有一些需要改進的地方,新的版本才會進行變動。
在MONGODB 3.4 的時候有一個參數
setParameter:
maxIndexBuildMemoryUsageMegabytes: 1024
這個參數就直接為后臺添加索引加速的,如果有足夠的內存,(內存的
與wiretiger 無關),則會加速background 添加索引的速度。
作為復制集,添加索引的的方式也是以命令的方式推送到從節點,但如果是
巨大的collection則很多的建議是,需要以特殊的方式來進行索引的添加,
這點類似有些 MYSQL 大表添加索引或字段的一個過程。
1 將節點從集群中分離
2 在分離的節點添加索引
3 將節點在此加入到集群中
4 將添加索引的從節點替換主節點
5 周而復始,直到索引的集群的節點都添加了索引
當然你要注意你的時間窗口,集群離開的時間不要超過oplog的時間窗口,否則
你就好看了。
所以大collection添加索引,就是一個量變到質變的過程,你需要考慮的問題
1 你內存的大小,是否能hold 你添加的索引
2 業務上訪問度是否是高強度的,如果是,那你及需要考慮上面提到的方法
3 oplog 的設計大小其實和你以后一些基礎操作有關
4 盡量拋棄舊版本,升級到 3.6 及以上的版本,這樣可以快速調整
oplog的大小
所以一件看上去不值得一提的加索引的事情,其實如果量大到一定程度,則
考慮和需要分析的問題和 量級比較小的時候是不能同日而語的。
以上就是MONGODB如何創建索引大內存以及連鎖思維是怎樣的,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。