91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

mongodb如何應對高并發

小晨
970
2021-07-12 16:35:52
欄目: 云計算

mongodb應對高并發的方法:1、采用批量數據方式操作MongoDB,定時定量獲取查詢結果;2、在mongodb中設置一個庫一個文件;3、mongodb存儲引擎選擇WiredTiger;4、增加mongodb最大連接數;5、優化mongodb中的寫策略;6、優化mongodb中的慢查詢語句。mongodb如何應對高并發

具體內容如下

一、代碼層級優化

采用批量數據方式操作MongoDB。將數據信息存放在消息隊列中進行緩存,然后定時定量的去獲取隊列消息,觸發連接MongoDB獲取查詢結果。

 所謂定時定量是指每一段時間或消息隊列達到某一數值。示例:每10秒或隊列消息數達到200時提交一次統計事件。

優點:減少網絡傳輸的IO,同時減少SQL語句解析的次數。降低MongoDB日志刷盤的數據量和頻率,從而提高效率。

缺點:有一定的消息延時(具體延時時間可調整隊列消息提交頻率和消息數大小來控制)。

二、MongoDB優化

1、MongoDB設置一個庫一個文件,即設置directoryPerDB為true;將索引也按數據庫名單獨存儲,即directoryForIndexes: true。

2,MongoDB存儲引擎選擇WiredTiger。

目前MongoDB的存儲引擎主要有MMAPV1、WiredTiger。在3.2版本之前MMAPV1是默認的存儲引擎,其采用linux操作系統內存映射技術,但一直飽受詬病;3.4以上版本默認的存儲引擎是wiredTiger,相對于MMAPV1其有如下優勢:

  • 讀寫操作性能更好,WiredTiger能更好的發揮多核系統的處理能力;

  • MMAPV1引擎使用表級鎖,當某個單表上有并發的操作,吞吐將受到限制。WiredTiger使用文檔級鎖,由此帶來并發及吞吐的提高

  • 相比MMAPV1存儲索引時WiredTiger使用前綴壓縮,更節省對內存空間的損耗;

  • 提供壓縮算法,可以大大降低對硬盤資源的消耗,節省約60%以上的硬盤資源;

3、增加MongoDB最大連接數(connectionsPerHost),有效利用CPU資源。

4、MongoDB寫策略配置優化:{ w: , j: , wtimeout: }

  • w: 數據寫入到number個節點才向用客戶端確認

        {w: 0} 對客戶端的寫入不需要發送任何確認,適用于性能要求高,但不關注正確性的場景

        {w: 1} 默認的writeConcern,數據寫入到Primary就向客戶端發送確認

        {w: “majority”} 數據寫入到副本集大多數成員后向客戶端發送確認,適用于對數據安全性要求比較高的場景,該選項會降低寫入性能

  • j: 寫入操作的journal持久化后才向客戶端確認,默認為{j: false},如果要求寫入持久化了才向客戶端確認,則指定該選項為true

  • wtimeout: 寫入超時時間,僅w的值大于1時有效

當指定{w: }時,數據需要成功寫入number個節點才算成功,如果寫入過程中有節點故障,可能導致這個條件一直不能滿足,從而一直不能向客戶端發送確認結果,針對這種情況,客戶端可設置wtimeout選項來指定超時時間,當寫入過程持續超過該時間仍未結束,則認為寫入失敗。

5,MongoDB查詢優化(大概分三步)

  • 開啟內置的查詢分析器,找出慢查詢語句

  • 分析慢查詢語句。

  • 解讀explain結果。

關于索引的建議:

1.索引很有用,但是它也是有成本的——它占內存,讓寫入變慢;

2.mongoDB通常在一次查詢里使用一個索引,所以多個字段的查詢或者排序需要復合索引才能更加高效;

3.在生成環境構建索引往往開銷很大,時間也不可以接受,在數據量龐大之前盡量進行查詢優化和構建索引;

4.避免昂貴的查詢,使用查詢分析器記錄那些開銷很大的查詢便于問題排查;

5.通過減少掃描文檔數量來優化查詢,使用explain對開銷大的查詢進行分析并優化;

6.索引是用來查詢小范圍數據的,不適合使用索引的情況:

   1)每次查詢都需要返回大部分數據的文檔,避免使用索引

   2)寫比讀多  

0
沈丘县| 兰州市| 民勤县| 垦利县| 安平县| 沙雅县| 滦平县| 长武县| 恩平市| 嘉荫县| 顺义区| 陆良县| 孟津县| 达日县| 微山县| 格尔木市| 浪卡子县| 四会市| 宽甸| 嘉定区| 新龙县| 石景山区| 怀集县| 花莲县| 阳泉市| 商都县| 常州市| 广德县| 濮阳县| 临沂市| 分宜县| 哈尔滨市| 佳木斯市| 九江县| 凌源市| 区。| 达孜县| 合江县| 新昌县| 新泰市| 循化|