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

資訊專欄INFORMATION COLUMN

Mongodb新舊版本索引創(chuàng)建鎖分析

IT那活兒 / 2215人閱讀
Mongodb新舊版本索引創(chuàng)建鎖分析

點擊上方“IT那活兒”公眾號,關(guān)注后了解更多內(nèi)容,不管IT什么活兒,干就完了?。?!


  

客戶生產(chǎn)環(huán)境中當前使用的Mongodb數(shù)據(jù)庫大多數(shù)都是3.6或者更低的版本,在3.X版本中創(chuàng)建索引,分為前臺和后臺創(chuàng)建,前臺創(chuàng)建索引會加庫級鎖,導(dǎo)致該庫上的其他所有讀寫操作都會被阻塞,后臺創(chuàng)建則不會阻塞增刪改查操作,但是建索引的效率會變慢。

本文將對3.6和4.2以上版本建索引的區(qū)別進行對比。


官方文檔相關(guān)的說明

從 MongoDB 4.2 開始,創(chuàng)建索引僅在構(gòu)建過程的開始和結(jié)束期間對被索引的集合獲取排他鎖,以保護元數(shù)據(jù)更改。構(gòu)建過程的其余部分使用后臺索引構(gòu)建的行為來最大化構(gòu)建期間對集合的讀寫訪問。
4.2版本以后的優(yōu)化后的索引創(chuàng)建過程的性能至少與舊版本的background創(chuàng)建方式相同。如果說創(chuàng)建索引的集合的增刪改操作較少,則性能跟前臺創(chuàng)建索引一樣。
索引的創(chuàng)建過程及加鎖情況如下表:


不同版本數(shù)據(jù)庫建索引測試對比

本次采用3.6和4.2兩個版本在相同的集合上創(chuàng)建索引進行對比。
測試用的集合包含1000W個文檔,大小近400MB。
3.6版本前臺創(chuàng)建索引,可看到從建索引開始一直持有庫級排他鎖,如下圖:
當在后臺創(chuàng)建索引時,全局、庫級、集合級都是IX鎖,不會對其他讀寫操作進行阻塞,見下圖:
在4.2版本中創(chuàng)建索引時,由于兩個持有排他鎖的階段時間都很短,我們沒法捕獲到,下面兩個截圖,分別是集合掃描和臨時表(side write table)數(shù)據(jù)處理階段,均持有的是意向共享鎖和意向排他鎖,不會對其他會話讀寫進行阻塞。

總結(jié):在目前的mongodb運維中,曾出現(xiàn)多次由于開發(fā)人員對mongodb索引特性不熟悉,未使用background:true創(chuàng)建索引而導(dǎo)致數(shù)據(jù)庫阻塞的故障。

經(jīng)驗證測試,4.2以后的版本創(chuàng)建索引不會產(chǎn)生長時間的阻塞,且索引創(chuàng)建效率比后臺創(chuàng)建索引要略快。所以可以結(jié)合其他實際情況推動數(shù)據(jù)庫升級到4.4版。


本文作者:劉運彬(上海新炬王翦團隊)

本文來源:“IT那活兒”公眾號

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

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

相關(guān)文章

  • UCloud MongoDB 如何應(yīng)對高考填志愿的上億流量高峰

    摘要:優(yōu)志愿張海鵬宋體背景宋體每年月下旬到月下旬期間是高考填志愿的高峰期,也是優(yōu)志愿后端面臨大流量高并發(fā)請求的業(yè)務(wù)高峰期。對于優(yōu)志愿讀多寫少的場景及其業(yè)務(wù)高峰期,用戶可以按需增刪節(jié)點,更好地實現(xiàn)讀取性能的擴展。 隨著用戶規(guī)模的增長,數(shù)據(jù)庫的壓力也在成倍增加。面對大流量、高并發(fā),UCloud MongoDB 做到了高效,并展現(xiàn)出了更好的性能體驗。 —— 優(yōu)志愿 CTO 張海鵬 背景...

    cppprimer 評論0 收藏0
  • 記一次MongoDB高負載的性能優(yōu)化

    摘要:年月日本文是關(guān)于記錄某次游戲服務(wù)端的性能優(yōu)化此處涉及的技術(shù)包括引擎隨著游戲?qū)肴藬?shù)逐漸增加單個集合的文檔數(shù)已經(jīng)超過經(jīng)常有玩家反饋說卡特別是在服務(wù)器遷移后從核降到核卡頓更嚴重了遂開始排查問題確認服務(wù)器壓力首先使用命令查看總體情況此時占用不高 Last-Modified: 2019年6月13日11:08:19 本文是關(guān)于記錄某次游戲服務(wù)端的性能優(yōu)化, 此處涉及的技術(shù)包括: MongoDB...

    huhud 評論0 收藏0
  • 記一次MongoDB高負載的性能優(yōu)化

    摘要:年月日本文是關(guān)于記錄某次游戲服務(wù)端的性能優(yōu)化此處涉及的技術(shù)包括引擎隨著游戲?qū)肴藬?shù)逐漸增加單個集合的文檔數(shù)已經(jīng)超過經(jīng)常有玩家反饋說卡特別是在服務(wù)器遷移后從核降到核卡頓更嚴重了遂開始排查問題確認服務(wù)器壓力首先使用命令查看總體情況此時占用不高 Last-Modified: 2019年6月13日11:08:19 本文是關(guān)于記錄某次游戲服務(wù)端的性能優(yōu)化, 此處涉及的技術(shù)包括: MongoDB...

    vibiu 評論0 收藏0
  • mysql - 收藏集 - 掘金

    摘要:步優(yōu)化以及其它數(shù)據(jù)庫后端掘金原文鏈接在發(fā)表了一篇簡潔有效有趣和令人信服的分鐘教程描述了如何進行優(yōu)化。關(guān)于的七種后端掘金對于的,在學(xué)習(xí)起來可能是比較亂的。 5 步優(yōu)化 MongoDB 以及其它數(shù)據(jù)庫 - 后端 - 掘金原文鏈接 Jared Rosoff 在 Scale Out Camp 發(fā)表了一篇簡潔、有效、有趣和令人信服的《8 分鐘 MongoDB 教程》描述了如何進行 MongoDB...

    Donald 評論0 收藏0

發(fā)表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<