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

主頁 > 知識庫 > 一次因mongo查詢不存在字段引發的事故記錄

一次因mongo查詢不存在字段引發的事故記錄

熱門標簽:外呼線路資源屬于電信業務嗎 青白江400企業電話申請 河南電話外呼系統招商 長沙電銷外呼防封卡是什么 呼和浩特外呼系統原理是什么 智能外呼系統官網 小裙科技電銷機器人怎樣 crm外呼系統聯系方式 內蒙古營銷智能外呼系統哪個好

話說今天的一個小小的查詢失誤給了我比較深刻的教訓,也讓我對mongo有了更深刻的理解,下面我們來說說這個事情的原委:

我們經常使用阿里云子賬號在DMS上查詢線上數據庫數據,今天也是平常的一次操作

集合:

XXXX_messagebr>數據量約 600萬

我執行了下面的mongo查詢:

db.XXXX_message.find({"channel_id": "1000000009XXXX700XXXX"}).limit(20);

但是上述語句中的 "channel_id" 字段不存在,真實字段應該是channel(有索引),屬于失誤操作

在執行過程中,我發現查詢時間很久,于是中斷了查詢又重試了兩次,還是很久,最后中斷了查詢,我意識到我想查的字段可能錯了,于是看了下集合索引,使用正確的字段檢索得到結果

但就在這時候,一場事故也在悄然醞釀,2分鐘后,阿里云監控中心打來告警電話,mongo數據庫cpu、iops異常升高

起初并沒有意識到是這個查詢導致的,還以為是半小時前發布的版本可能有問題,于是立即回滾了版本并開始項目檢查

查了許久,并沒有查到可能造成本次數據庫異常告警的原因,項目對該庫的依賴的操作的地方非常少。

當我們苦苦想不到原因的時候,我們去查了下相關慢sql日志,果然一道耗時約1800000ms的慢sql日志引起了我們的注意

這時候我似乎意識到了點什么,我立馬查阿里云控制臺查詢歷史核對了我剛才查詢的時間和數據庫cpu、磁盤iops異常升高的時間節點

完全對上了,該起事故持續半小時左右,那條沒有被成功中斷的sql也執行了半小時左右

這讓我很震驚,一次控制臺查詢居然導致整個數據庫出現如此嚴重的問題,mongo底層沒有考慮過不存在字段查詢問題嗎?

我慢慢平復心情,仔細回顧這件事情,我嘗試著從mongo和mysql的底層去理解這個問題

mongo本身是集合型數據庫,意味著每個集合文檔都可以有自己獨立的數據結構,和mysql等關系型數據庫的很重要的區別就是它沒有固定的表結構,它包容且隨性

當在查詢一個不存在的字段的時候,它仍然按照普通查詢檢索數據,這時候它會全表掃描,也就是說在上述失誤語句中,mongo底層檢索了整個集合的數據集,

遍歷了該集合所有的磁盤塊,這才導致磁盤iops升高且cpu升高。

這次經歷讓我覺得我有必要記錄下相關心得,可能對于很多高級技術人員,這些東西都是很容易理解和規避的事情,但大多數人對此可能并沒有深刻認識

這次事故讓我對技術多了一層敬畏,這有助于我在今后的代碼實踐和操作中更加謹慎和多一層思考,希望大家以此為戒!此文共勉!

到此這篇關于一次因mongo查詢不存在字段引發的事故記錄的文章就介紹到這了,更多相關mongo查詢不存在字段的事故內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

標簽:楚雄 菏澤 池州 呼倫貝爾 黃石 舟山 安順 白山

巨人網絡通訊聲明:本文標題《一次因mongo查詢不存在字段引發的事故記錄》,本文關鍵詞  一次,因,mongo,查詢,不存在,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《一次因mongo查詢不存在字段引發的事故記錄》相關的同類信息!
  • 本頁收集關于一次因mongo查詢不存在字段引發的事故記錄的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 江华| 光泽县| 青川县| 崇文区| 米泉市| 宜川县| 蒲江县| 巨鹿县| 庆安县| 蕉岭县| 贵定县| 勐海县| 大方县| 姚安县| 株洲市| 福清市| 独山县| 秦皇岛市| 凤阳县| 黎城县| 如东县| 梓潼县| 神木县| 上蔡县| 大英县| 丰宁| 荃湾区| 新巴尔虎左旗| 沭阳县| 锡林浩特市| 巴彦淖尔市| 运城市| 平乡县| 广昌县| 漾濞| 阿拉善左旗| 含山县| 彭州市| 山东| 北宁市| 清镇市|