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

主頁 > 知識庫 > MongoDB優化心得分享

MongoDB優化心得分享

熱門標簽:濟南電銷機器人加盟公司 呼和浩特電銷外呼系統加盟 老虎洗衣店地圖標注 杭州人工電銷機器人價格 云南外呼系統 蘋果汽車租賃店地圖標注 怎么投訴地圖標注 廣州長安公司怎樣申請400電話 電銷機器人是什么軟件

這里總結下這段時間使用mongo的心得,列出了幾個需要注意的地方。

1. 系統參數及mongo參數設置

mongo參數主要是storageEngine和directoryperdb,這兩個參數一開始不選定后續就無法再更改。

directoryperdb主要是將數據庫分文件夾存放,方便后續的備份及數據遷移。

storageEngine(存儲引擎)默認使用的是MMAPv1,推薦使用3.0新加入的引擎wiredTiger。經實際使用wiredTiger占用的磁盤空間是MMAP的1/5,索引大小是其1/2,查詢速度也提高很多,更重要的是該引擎提供了document級別的鎖,當集合插入或更新數據時不需要阻塞讀操作了。唯一的問題是市面上支持該引擎查詢的工具不多,MongoVUE無法查到該引擎存儲的集合,NosqlManager-mongo可以查到但需要.net環境支持。個人覺得熟悉下mongo command用mongo shell就足夠了,所以還是強烈推薦使用wiredTiger引擎。

2. 無需對集合進行水平切分

由于之前一直使用關系型數據庫,關系型數據庫當單表數據量超大時經常使用的一直方法是對數據表進行分表。在使用mongo時便很自然的覺得這招仍然有用。由于該系統的分表都是動態生成的,做到后面發現這招對mongo帶來的性能提升遠遠抵不過維護成本的增加。

分析一下關系型數據庫分表會提高性能的最大原因是很多關系型數據庫一張表是一個文件,分表可以避免一個文件過大所造成數據提取速度變慢。但是mongo并不是這樣存儲的,所以這條并不成立了。

用過的都知道mongo對索引的依賴非常大,如果集合不能一開始就設計好,那后續索引就得寫腳本來創建。這里貢獻個給mongo大表動態創建索引的腳本:

eval(function () {
  var infos = [];
  var collNames = db.getCollectionNames();
  for (var i = 0; i  collNames.length; i++) {
    var collName = collNames[i];
    var collSize = db.getCollection(collName).count();
    if (collSize > 1000000  collName.indexOf("info_")==0) {
     db.getCollection(collName).ensureIndex({publishDate:-1,blendedScore:-1,publishTime:-1,isRubbish:1},{name:"ScoreSortIdx",background:true});
      db.getCollection(collName).ensureIndex({similarNum:-1,publishTime:-1,isRubbish:1},{name:"HotSortIdx",background:true});
      db.getCollection(collName).ensureIndex({publishTime:-1,isRubbish:1},{name:"TimeSortIdx",background:true});
      infos.push("name:" + collName + "索引創建成功");
    }
  }
  return infos;
}());

這么看動態創建索引勉強還是可以解決的,但是最坑的一個地方是sharding完全沒辦法做了。shard需要指定要shard的集合和分區鍵,這個就沒法提前動態指定了。所以mongo集合不需要做水平切分(至少千萬級不需要了,更大直接shard掉),只需要按業務分開就可以了。

3. 使用Capped Collection

有人使用mongo做數據緩存,而且是緩存固定數量的數據,仍然用正常的集合,然后定期清理數據。其實這時用capped collection性能會好很多。

4. 生產環境一定要用副本集

很多人線上環境還是用單機版,雖然部署快但是很多mongo自然提供的功能都沒有用到像自動故障轉移、讀寫分離,這些對后續系統擴容及性能優化太重要了。我想會使用mongo的應該是數據量達到一定級別,查詢性能會非常重要,所以強烈建議上線時直接使用副本集。

5. 學會使用explain

之前一直習慣用工具來查詢,現在發現應該多使用mongo shell命令來查詢,并使用explain查看查詢計劃。另外在尋找最優索引的時候hint命令也是非常有用的。

db.info.find({publishDate:{$gte:20160310,$lte:20160320},isRubbish:{$in:[0,1]},title:{$regex:".*test.*"},$or:[{useId:10},{groupId:20}]}).explain("executionStats");

6. 寫操作頻繁無法使用讀寫分離

由于系統寫操作較多,造成各種w級別鎖經常出現(這種鎖一般是block read的)而且系統對于數據一致性要求不會太多(大多是后臺寫入,前臺讀取,因此允許有一定延遲)所以想用副本集來做讀寫分離。當真正測試后發現副本集上的讀取也經常出現阻塞的情況。通過db.currentOp()發現經常出現一個op:none的操作在申請global write lock,這時所有操作的狀態都是在waitingForLock:true,這個問題google了很久都沒找到解決方法。后面在官方文檔有關并發的FAQ中發現下面這個大坑:

How does concurrency affect secondaries?

In replication, MongoDB does not apply writes serially to secondaries.
Secondaries collect oplog entries in batches and then apply those
batches in parallel. Secondaries do not allow reads while applying the
write operations, and apply write operations in the order that they
appear in the oplog.

原來mongodb的副本在復制主節點數據執行oplog的時候,讀取是被阻塞的,這基本宣告無法在副本上去讀取數據了,白白耗費了幾天精力。所以mongo官方不推薦做讀寫分離,原來坑是在這里。。。其實寫多讀少的情況做讀寫分離作用也不大,因為性能瓶頸主要是在寫入,讀取一般不消耗多少資源(另外wiredTiger引擎的鎖做到了doc級別,所以鎖的情況相對較少)。官方推薦的做法是shard,可以有效的將寫入分配到多臺服務器提高寫入速度,使系統實現水平擴容。

7、千萬不要讓磁盤滿了

80%的時候就要開始注意從集拆分片,如果你的數據增長特別快,很可能你還沒有拆分磁盤就滿了導致MongoDB掛掉了。如果數據量很大,盡量使用分片,不要使用副本集,做好磁盤容量規劃,就是使用分片了也提前擴容,畢竟chunk遷移還是那么的慢。

8、安全風險

MongoDB是默認不提示用戶設置密碼的,所以,如果你沒有配置密碼又把MongoDB放在公網上面了,那么「恭喜」,你可能已經成為了肉雞

9、數據庫級鎖

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

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

•MongoDB 沒有完整事務支持,操作原子性只到單個 document 級別,所以通常操作粒度比較小;

•MongoDB 鎖實際占用時間是內存數據計算和變更時間,通常很快;

•MongoDB 鎖有一種臨時放棄機制,當出現需要等待慢速 IO 讀寫數據時,可以先臨時放棄,等 IO 完成之后再重新獲取鎖。

通常不出問題不等于沒有問題,如果數據操作不當,依然會導致長時間占用寫鎖,比如下面提到的前臺建索引操作,當出現這種情況的時候,整個數據庫就處于完全阻塞狀態,無法進行任何讀寫操作,情況十分嚴重。

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

您可能感興趣的文章:
  • 淺析Mongodb性能優化的相關問題
  • Mongodb索引的優化
  • MongoDB查詢性能優化驗證及驗證
  • MongoDB性能優化及監控
  • 如何對 MongoDB 進行性能優化(五個簡單步驟)
  • MongoDb優化指南

標簽:玉林 自貢 廈門 泰安 無錫 興安盟 遼陽 雞西

巨人網絡通訊聲明:本文標題《MongoDB優化心得分享》,本文關鍵詞  MongoDB,優化,心得,分享,MongoDB,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《MongoDB優化心得分享》相關的同類信息!
  • 本頁收集關于MongoDB優化心得分享的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    久久久久久电影| 欧美性淫爽ww久久久久无| 亚洲午夜羞羞片| 日韩美女久久久| 国产精品久久99| 中文无字幕一区二区三区| 久久久蜜臀国产一区二区| 精品国产区一区| 欧美经典一区二区| 国产精品国产三级国产普通话蜜臀| 国产女人水真多18毛片18精品视频| 国产午夜精品久久久久久久| 国产欧美精品在线观看| 国产精品久线观看视频| 亚洲美女偷拍久久| 亚洲午夜免费福利视频| 视频精品一区二区| 国产精品一区免费在线观看| 99久久精品情趣| 精品视频一区二区三区免费| 欧美成人激情免费网| 亚洲国产电影在线观看| 亚洲综合图片区| 久久成人久久爱| 懂色av中文一区二区三区 | 午夜精品久久久久久久久久久| 蜜臀久久99精品久久久久宅男| 国内精品嫩模私拍在线| 成人激情电影免费在线观看| 欧美在线视频不卡| 欧美精品一区二区三区蜜桃| 中文字幕一区二区三区四区不卡| 亚洲一区在线观看免费观看电影高清 | 91麻豆精品国产无毒不卡在线观看 | 在线不卡的av| 精品国产91乱码一区二区三区| 国产精品剧情在线亚洲| 天天综合色天天| 国产一区二三区| 欧美精品久久久久久久多人混战 | 欧美日韩国产综合草草| 久久久一区二区三区捆绑**| 亚洲一区二区高清| 夫妻av一区二区| 日韩三级高清在线| 亚洲图片欧美一区| 国产99久久精品| 6080亚洲精品一区二区| 亚洲精品亚洲人成人网在线播放| 全部av―极品视觉盛宴亚洲| 99久久久国产精品免费蜜臀| 亚洲精品一区二区三区香蕉 | 狠狠久久亚洲欧美| 欧美视频在线播放| 1024国产精品| 成人免费毛片嘿嘿连载视频| 日韩精品一区二区三区swag| 午夜视频在线观看一区| av色综合久久天堂av综合| 欧美成人猛片aaaaaaa| 亚洲福利视频导航| 在线一区二区三区| 亚洲激情图片qvod| 波多野结衣91| 国产精品免费免费| 丁香天五香天堂综合| 26uuu国产在线精品一区二区| 免费欧美日韩国产三级电影| 宅男在线国产精品| 蜜桃视频在线观看一区二区| 欧美福利视频导航| 青青青爽久久午夜综合久久午夜| 欧美日本不卡视频| 日韩av中文字幕一区二区| 91精品一区二区三区在线观看| 污片在线观看一区二区| 欧美日韩精品欧美日韩精品一综合| 亚洲午夜精品一区二区三区他趣| 在线观看视频一区二区| 一区二区三区免费看视频| 色综合中文字幕| 亚洲精品视频在线观看免费| 欧美亚洲日本国产| 调教+趴+乳夹+国产+精品| 91精品国产欧美日韩| 久久国产尿小便嘘嘘| 久久老女人爱爱| 成年人国产精品| 亚洲资源中文字幕| 日韩欧美成人午夜| 国产1区2区3区精品美女| 亚洲色欲色欲www在线观看| 一本色道久久综合亚洲aⅴ蜜桃| 亚洲一区二区三区自拍| 4438x亚洲最大成人网| 国产精品系列在线播放| 亚洲人成网站精品片在线观看| 91成人免费网站| 九色综合国产一区二区三区| 国产精品久久久久久久久晋中 | 日韩精品电影在线| 26uuu精品一区二区在线观看| 不卡视频在线观看| 丝袜美腿亚洲综合| 国产精品午夜久久| 欧美精品电影在线播放| 国产98色在线|日韩| 日韩二区三区四区| 久久综合九色综合欧美亚洲| 欧美亚洲国产怡红院影院| 国产一区二区视频在线播放| 亚洲成av人片在www色猫咪| 久久久久久久久久久黄色| 精品视频色一区| 国产乱妇无码大片在线观看| 亚洲国产一区二区在线播放| 欧美国产一区视频在线观看| 欧美一区二区三区在线观看 | 色综合久久综合网97色综合| 久久99日本精品| 亚洲欧美日韩国产中文在线| 精品美女在线观看| 欧美日本一道本| 一本一道综合狠狠老| 成人国产免费视频| 精品夜夜嗨av一区二区三区| 亚洲国产一区二区三区青草影视| 国产精品国产自产拍在线| 日韩美女在线视频| 欧美男女性生活在线直播观看| 成人国产亚洲欧美成人综合网| 国产在线不卡一区| 蜜桃91丨九色丨蝌蚪91桃色| 亚洲一区二区三区国产| 中文字幕一区日韩精品欧美| 久久综合久久久久88| 日韩美女主播在线视频一区二区三区| 欧美日韩高清在线播放| 色999日韩国产欧美一区二区| 成人综合婷婷国产精品久久蜜臀 | 亚洲视频免费观看| 国产精品的网站| 中文一区二区完整视频在线观看| 久久久精品国产99久久精品芒果| 2022国产精品视频| 337p日本欧洲亚洲大胆色噜噜| 日韩欧美国产小视频| 日韩一级高清毛片| 欧美成人官网二区| 欧美xxxx在线观看| 久久精品在线观看| 国产亚洲va综合人人澡精品| 久久久美女毛片| 国产欧美一区二区精品忘忧草 | 国产欧美综合色| 国产精品天美传媒| 日韩美女啊v在线免费观看| 国产精品久久久久久久久久久免费看 | 91丨porny丨国产入口| 色菇凉天天综合网| 在线亚洲高清视频| 日韩一级片网址| 欧美va在线播放| 欧美激情综合在线| 亚洲欧美日韩国产中文在线| 亚洲国产精品自拍| 麻豆极品一区二区三区| 国产精品99久久久久久宅男| aa级大片欧美| 欧美人牲a欧美精品| 欧美精品一区二区三区四区| 亚洲国产精品ⅴa在线观看| 亚洲美女屁股眼交3| 日韩二区三区在线观看| 成人综合在线视频| 欧美日韩国产大片| 26uuu国产在线精品一区二区| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 欧美日韩在线播放三区| 欧美成人高清电影在线| 中文字幕视频一区| 日产欧产美韩系列久久99| 国产精品一区二区久激情瑜伽| 91在线无精精品入口| 日韩一级视频免费观看在线| 午夜精品爽啪视频| 国产高清视频一区| 欧美午夜免费电影| 国产色产综合色产在线视频| 一二三四社区欧美黄| 国产精品一区二区在线观看网站| 欧美在线播放高清精品| 国产欧美日本一区视频| 美女视频黄 久久| 色94色欧美sute亚洲线路一久| 久久先锋影音av鲁色资源网| 亚洲国产精品久久人人爱蜜臀| 成人永久aaa| 欧美成人精品高清在线播放| 亚洲成人1区2区|