婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > MongoDB中的一些坑(最好不要用)

MongoDB中的一些坑(最好不要用)

熱門標(biāo)簽:兗州電話外呼營銷系統(tǒng) 機器人外呼系統(tǒng)軟件存在問題 企業(yè)智能外呼系統(tǒng)價格多少 福州電銷機器人源代碼 徐州ai電銷機器人原理 高德地圖標(biāo)注商戶位置 智能電銷機器人銷售話術(shù) 南京400電話怎樣辦理 沈陽營銷電銷機器人招商

MongoDB 是目前炙手可熱的 NoSQL 文檔型數(shù)據(jù)庫,它提供的一些特性很棒:如自動 failover 機制,自動 sharding,無模式 schemaless,大部分情況下性能也很棒。但是薄荷在深入使用 MongoDB 過程中,遇到了不少問題,下面總結(jié)幾個我們遇到的坑。特別申明:我們目前用的 MongoDB 版本是 2.4.10,曾經(jīng)升級到 MongoDB 2.6.0 版本,問題依然存在,又回退到 2.4.10 版本。

MongoDB 數(shù)據(jù)庫級鎖

坑爹指數(shù):5星(最高5星)

MongoDB的鎖機制和一般關(guān)系數(shù)據(jù)庫如 MySQL(InnoDB), Oracle 有很大的差異,InnoDB 和 Oracle 能提供行級粒度鎖,而 MongoDB 只能提供 庫級粒度鎖,這意味著當(dāng) MongoDB 一個寫鎖處于占用狀態(tài)時,其它的讀寫操作都得干等。

初看起來庫級鎖在大并發(fā)環(huán)境下有嚴(yán)重的問題,但是 MongoDB 依然能夠保持大并發(fā)量和高性能,這是因為 MongoDB 的鎖粒度雖然很粗放,但是在鎖處理機制和關(guān)系數(shù)據(jù)庫鎖有很大差異,主要表現(xiàn)在:

MongoDB 沒有完整事務(wù)支持,操作原子性只到單個 document 級別,所以通常操作粒度比較??;
MongoDB 鎖實際占用時間是內(nèi)存數(shù)據(jù)計算和變更時間,通常很快;
MongoDB 鎖有一種臨時放棄機制,當(dāng)出現(xiàn)需要等待慢速 IO 讀寫數(shù)據(jù)時,可以先臨時放棄,等 IO 完成之后再重新獲取鎖。
通常不出問題不等于沒有問題,如果數(shù)據(jù)操作不當(dāng),依然會導(dǎo)致長時間占用寫鎖,比如下面提到的前臺建索引操作,當(dāng)出現(xiàn)這種情況的時候,整個數(shù)據(jù)庫就處于完全阻塞狀態(tài),無法進(jìn)行任何讀寫操作,情況十分嚴(yán)重。

解決問題的方法,盡量避免長時間占用寫鎖操作,如果有一些集合操作實在難以避免,可以考慮把這個集合放到一個單獨的 MongoDB 庫里,因為 MongoDB 不同庫鎖是相互隔離的,分離集合可以避免某一個集合操作引發(fā)全局阻塞問題。

建索引導(dǎo)致數(shù)據(jù)庫阻塞

坑爹指數(shù):3星

上面提到了 MongoDB 庫級鎖的問題,建索引就是一個容易引起長時間寫鎖的問題,MongoDB 在前臺建索引時需要占用一個寫鎖(而且不會臨時放棄),如果集合的數(shù)據(jù)量很大,建索引通常要花比較長時間,特別容易引起問題。

解決的方法很簡單,MongoDB 提供了兩種建索引的訪問,一種是 background 方式,不需要長時間占用寫鎖,另一種是非 background 方式,需要長時間占用鎖。使用 background 方式就可以解決問題。 例如,為超大表 posts 建立索引, 千萬不用使用

復(fù)制代碼 代碼如下:

db.posts.ensureIndex({user_id: 1})

而應(yīng)該使用

復(fù)制代碼 代碼如下:

db.posts.ensureIndex({user_id: 1}, {background: 1})

不合理使用嵌入 embed document

坑爹指數(shù):5星

embed document 是 MongoDB 相比關(guān)系數(shù)據(jù)庫差異明顯的一個地方,可以在某一個 document 中嵌入其它子 document,這樣可以在父子 document 保持在單一 collection 中,檢索修改比較方便。

比如薄荷的應(yīng)用情景中有一個 Group document,用戶申請加入 Group 建模為 GroupRequest document,我們最初的時候使用 embed 方式把 GroupRequest 放置到 Group 中。 Ruby 代碼如下所示(使用了 Mongoid ORM):

復(fù)制代碼 代碼如下:

class Group
  include Mongoid::Document
  ...
  embeds_many :group_requests
  ...
end

class GroupRequest
  include Mongoid::Document
  ...
  embedded_in :group
  ...
end


這個使用方式讓我們掉到坑里了,差點就爬不出來,它導(dǎo)致有接近兩周的時間系統(tǒng)問題,高峰時段常有幾分鐘的系統(tǒng)卡頓,最嚴(yán)重一次甚至引起 MongoDB 宕機。

仔細(xì)分析后,發(fā)現(xiàn)某些活躍的 Group 的 group_requests 增加(當(dāng)有新申請時)和更改(當(dāng)通過或拒絕用戶申請時)異常頻繁,而這些操作經(jīng)常長時間占用寫鎖,導(dǎo)致整個數(shù)據(jù)庫阻塞。原因是當(dāng)有增加 group_request 操作時,Group 預(yù)分配的空間不夠,需要重新分配空間(內(nèi)存和硬盤都需要),耗時較長,另外 Group 上建的索引很多,移動 Group 位置導(dǎo)致大量索引更新操作也很耗時,綜合起來引起了長時間占用鎖問題。

解決問題的方法,說起來也簡單,就是把 embed 關(guān)聯(lián)更改成的普通外鍵關(guān)聯(lián),就是類似關(guān)系數(shù)據(jù)庫的做法,這樣 group_request 增加或修改都只發(fā)生在 GroupRequest 上,簡單快速,避免長時間占用寫鎖問題。當(dāng)關(guān)聯(lián)對象的數(shù)據(jù)不固定或者經(jīng)常發(fā)生變化時,一定要避免使用 embed 關(guān)聯(lián),不然會死的很慘。

不合理使用 Array 字段

坑爹指數(shù):4星

MongoDB 的 Array 字段是比較獨特的一個特性,它可以在單個 document 里存儲一些簡單的一對多關(guān)系。

薄荷有一個應(yīng)用情景使用遇到嚴(yán)重的性能問題,直接上代碼如下所示:

復(fù)制代碼 代碼如下:

class User
  include Mongoid::Document
  ...
  field :follower_user_ids, type: Array, default: []
  ...
end

User 中通過一個 Array 類型字段 follower_user_ids 保存用戶關(guān)注的人的 id,用戶關(guān)注的人從 10個到 3000 個不等,變化是比較頻繁的,和上面 embed 引發(fā)的問題類似,頻繁的 follower_user_ids 增加修改操作導(dǎo)致大量長時間數(shù)據(jù)庫寫鎖,從而引發(fā) MongoDB 數(shù)據(jù)庫性能急劇下降。

解決問題的方法:我們把 follower_user_ids 轉(zhuǎn)移到了內(nèi)存數(shù)據(jù)庫 redis 中,避免了頻繁更改 MongoDB 中的 User, 從而徹底解決問題。如果不使用 redis,也可以建立一個 UserFollower 集合,使用外鍵形式關(guān)聯(lián)。

先列舉上面幾個坑吧,都是害人不淺的陷阱,使用 MongoDB 過程一定要多加注意,避免掉到坑里。

您可能感興趣的文章:
  • MongoDB常用操作命令大全
  • MongoDB各種查詢操作詳解
  • MongoDB 語法使用小結(jié)
  • Mongodb 忘記密碼的解決辦法
  • mongos崩潰后無法重啟問題的解決方法

標(biāo)簽:邯鄲 吉安 本溪 景德鎮(zhèn) 大理 昭通 鶴崗 丹東

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MongoDB中的一些坑(最好不要用)》,本文關(guān)鍵詞  MongoDB,中的,一些,坑,最,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MongoDB中的一些坑(最好不要用)》相關(guān)的同類信息!
  • 本頁收集關(guān)于MongoDB中的一些坑(最好不要用)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    色噜噜夜夜夜综合网| 国产呦精品一区二区三区网站| 国产综合色在线视频区| 精品一区二区免费视频| 色婷婷精品久久二区二区蜜臂av| 成人精品一区二区三区四区| 白白色亚洲国产精品| 欧美一区二区三区影视| 综合久久久久久久| 国产美女av一区二区三区| 欧美亚洲愉拍一区二区| 欧美极品少妇xxxxⅹ高跟鞋| 亚洲国产成人午夜在线一区| 国产网红主播福利一区二区| 天天综合日日夜夜精品| 色嗨嗨av一区二区三区| 国产精品福利影院| 91在线观看地址| 夜夜嗨av一区二区三区| 欧美日韩亚洲高清一区二区| 亚洲福中文字幕伊人影院| 91碰在线视频| 天天操天天干天天综合网| 色婷婷综合久久久中文一区二区| 91香蕉视频污在线| 一级日本不卡的影视| 色婷婷av一区二区三区大白胸| 精品国产凹凸成av人导航| 精品一区二区日韩| 国产精品久久三| 欧美日韩在线观看一区二区| 亚洲精品日韩一| 精品国产一区二区在线观看| 黑人巨大精品欧美一区| 国产女人水真多18毛片18精品视频 | 色8久久精品久久久久久蜜| 亚洲黄色录像片| 精品国产青草久久久久福利| 91在线视频播放| 国产精品亚洲成人| 亚洲午夜精品一区二区三区他趣| 欧美刺激脚交jootjob| 91小视频免费看| 免费日韩伦理电影| 亚洲精品亚洲人成人网在线播放| 欧美午夜精品电影| 成人国产精品免费| 日韩精品一区第一页| 亚洲国产一区二区三区青草影视| 久久久久久99精品| 欧美日韩三级一区| 91丨国产丨九色丨pron| 久久99久久久久久久久久久| 亚洲丰满少妇videoshd| 亚洲综合成人在线| 久久精品一二三| 国产精品视频在线看| 亚洲视频香蕉人妖| 一区二区三区色| 丝袜亚洲另类丝袜在线| youjizz国产精品| av网站免费线看精品| 99热在这里有精品免费| 国产精品一区专区| gogo大胆日本视频一区| 欧美日韩精品欧美日韩精品| 日韩欧美国产三级电影视频| thepron国产精品| 色哟哟欧美精品| 91精品福利在线| 欧美性受xxxx| 亚洲精品一线二线三线| 欧美日本免费一区二区三区| 欧美最猛黑人xxxxx猛交| 欧美视频三区在线播放| 蜜臀av性久久久久蜜臀aⅴ流畅 | 3d动漫精品啪啪一区二区竹菊| 在线视频一区二区三| 日韩午夜在线观看| 亚洲一区二区三区三| 激情伊人五月天久久综合| 国产一区二区三区综合| 日韩写真欧美这视频| 亚洲综合在线电影| 久久综合精品国产一区二区三区| 久久成人av少妇免费| av爱爱亚洲一区| 91精品国产色综合久久不卡电影| 国产亚洲成aⅴ人片在线观看| 国产精品卡一卡二卡三| 日韩中文欧美在线| 国产精品嫩草影院av蜜臀| 婷婷久久综合九色综合伊人色| 韩国成人在线视频| 欧美电影精品一区二区| 一区二区三区成人在线视频| 国产女主播视频一区二区| 一区二区三区四区蜜桃| 9191精品国产综合久久久久久 | 粉嫩在线一区二区三区视频| 国产亚洲欧美在线| 日韩一区二区三区精品视频| 日本韩国欧美在线| 95精品视频在线| 成人免费毛片aaaaa**| 国产精品18久久久久久久网站| 亚洲国产精品天堂| 亚洲视频在线观看三级| 亚洲色图第一区| 中文字幕av一区二区三区高| 91成人网在线| 欧美做爰猛烈大尺度电影无法无天| 91免费版pro下载短视频| 日韩视频在线你懂得| 色婷婷国产精品久久包臀| 亚洲乱码国产乱码精品精的特点 | 91精品国产色综合久久不卡电影| 亚洲一本大道在线| 久久综合色一综合色88| 在线免费观看日韩欧美| 成人精品一区二区三区四区| 伊人色综合久久天天人手人婷| 91国偷自产一区二区开放时间| 久久国产精品色| 亚洲国产精品久久艾草纯爱| 欧美大片拔萝卜| 欧美一二三四在线| 日韩欧美不卡在线观看视频| 欧美午夜精品一区| 欧美三级视频在线| 高清视频一区二区| 国产成人免费高清| 成人黄色大片在线观看| 91久久香蕉国产日韩欧美9色| 蜜桃91丨九色丨蝌蚪91桃色| 国产精品色婷婷久久58| 国产亚洲1区2区3区| 精品日韩欧美在线| 国产日韩高清在线| 久久女同互慰一区二区三区| 蜜桃av一区二区三区电影| 69堂成人精品免费视频| 亚洲免费观看高清完整版在线观看| 久久免费电影网| 亚洲三级久久久| 极品尤物av久久免费看| 99精品黄色片免费大全| 日韩亚洲欧美在线观看| 亚洲视频在线观看一区| 国产一区二区精品久久| 欧美日韩三级在线| 夜夜精品视频一区二区| 不卡一区二区三区四区| 欧美精品久久一区| 亚洲精品乱码久久久久久日本蜜臀| 久久99九九99精品| 91精品免费在线| 亚洲成精国产精品女| 97成人超碰视| 国产午夜三级一区二区三| 激情欧美一区二区三区在线观看| 亚洲欧美一区二区三区国产精品 | 91福利国产精品| 亚洲精品国产精品乱码不99 | 日韩精品国产精品| 欧美日韩一区二区三区在线看| 亚洲品质自拍视频| 在线播放欧美女士性生活| 午夜精品福利一区二区三区av| 欧美日韩一级片在线观看| 免费人成黄页网站在线一区二区| 欧美综合久久久| 精品一区二区三区不卡| 国产精品国模大尺度视频| 91精品福利在线| 国产老肥熟一区二区三区| 国产精品久久免费看| 777奇米成人网| 成人美女视频在线观看18| 亚洲精品欧美专区| 91精品国产免费| 色悠久久久久综合欧美99| 狠狠色丁香婷婷综合久久片| 中文字幕一区三区| 2021久久国产精品不只是精品| 99久久精品国产网站| 国产99久久久国产精品潘金| 亚洲精品乱码久久久久久久久| 精品国内二区三区| 欧美色图一区二区三区| 99久久免费精品高清特色大片| 日本不卡一区二区| 亚洲欧洲日韩在线| 亚洲国产精品国自产拍av| 精品国产乱码久久久久久老虎| 欧美午夜免费电影| 99精品久久免费看蜜臀剧情介绍| 国产伦精一区二区三区| 国产尤物一区二区| 成人动漫中文字幕|