濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > 一次因mongo查詢不存在字段引發(fā)的事故記錄

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

熱門標(biāo)簽:外呼線路資源屬于電信業(yè)務(wù)嗎 青白江400企業(yè)電話申請(qǐng) 河南電話外呼系統(tǒng)招商 長(zhǎng)沙電銷外呼防封卡是什么 呼和浩特外呼系統(tǒng)原理是什么 智能外呼系統(tǒng)官網(wǎng) 小裙科技電銷機(jī)器人怎樣 crm外呼系統(tǒng)聯(lián)系方式 內(nèi)蒙古營(yíng)銷智能外呼系統(tǒng)哪個(gè)好

話說(shuō)今天的一個(gè)小小的查詢失誤給了我比較深刻的教訓(xùn),也讓我對(duì)mongo有了更深刻的理解,下面我們來(lái)說(shuō)說(shuō)這個(gè)事情的原委:

我們經(jīng)常使用阿里云子賬號(hào)在DMS上查詢線上數(shù)據(jù)庫(kù)數(shù)據(jù),今天也是平常的一次操作

集合:

XXXX_messagebr>數(shù)據(jù)量約 600萬(wàn)

我執(zhí)行了下面的mongo查詢:

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

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

在執(zhí)行過(guò)程中,我發(fā)現(xiàn)查詢時(shí)間很久,于是中斷了查詢又重試了兩次,還是很久,最后中斷了查詢,我意識(shí)到我想查的字段可能錯(cuò)了,于是看了下集合索引,使用正確的字段檢索得到結(jié)果

但就在這時(shí)候,一場(chǎng)事故也在悄然醞釀,2分鐘后,阿里云監(jiān)控中心打來(lái)告警電話,mongo數(shù)據(jù)庫(kù)cpu、iops異常升高

起初并沒(méi)有意識(shí)到是這個(gè)查詢導(dǎo)致的,還以為是半小時(shí)前發(fā)布的版本可能有問(wèn)題,于是立即回滾了版本并開(kāi)始項(xiàng)目檢查

查了許久,并沒(méi)有查到可能造成本次數(shù)據(jù)庫(kù)異常告警的原因,項(xiàng)目對(duì)該庫(kù)的依賴的操作的地方非常少。

當(dāng)我們苦苦想不到原因的時(shí)候,我們?nèi)ゲ榱讼孪嚓P(guān)慢sql日志,果然一道耗時(shí)約1800000ms的慢sql日志引起了我們的注意

這時(shí)候我似乎意識(shí)到了點(diǎn)什么,我立馬查阿里云控制臺(tái)查詢歷史核對(duì)了我剛才查詢的時(shí)間和數(shù)據(jù)庫(kù)cpu、磁盤iops異常升高的時(shí)間節(jié)點(diǎn)

完全對(duì)上了,該起事故持續(xù)半小時(shí)左右,那條沒(méi)有被成功中斷的sql也執(zhí)行了半小時(shí)左右

這讓我很震驚,一次控制臺(tái)查詢居然導(dǎo)致整個(gè)數(shù)據(jù)庫(kù)出現(xiàn)如此嚴(yán)重的問(wèn)題,mongo底層沒(méi)有考慮過(guò)不存在字段查詢問(wèn)題嗎?

我慢慢平復(fù)心情,仔細(xì)回顧這件事情,我嘗試著從mongo和mysql的底層去理解這個(gè)問(wèn)題

mongo本身是集合型數(shù)據(jù)庫(kù),意味著每個(gè)集合文檔都可以有自己獨(dú)立的數(shù)據(jù)結(jié)構(gòu),和mysql等關(guān)系型數(shù)據(jù)庫(kù)的很重要的區(qū)別就是它沒(méi)有固定的表結(jié)構(gòu),它包容且隨性

當(dāng)在查詢一個(gè)不存在的字段的時(shí)候,它仍然按照普通查詢檢索數(shù)據(jù),這時(shí)候它會(huì)全表掃描,也就是說(shuō)在上述失誤語(yǔ)句中,mongo底層檢索了整個(gè)集合的數(shù)據(jù)集,

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

這次經(jīng)歷讓我覺(jué)得我有必要記錄下相關(guān)心得,可能對(duì)于很多高級(jí)技術(shù)人員,這些東西都是很容易理解和規(guī)避的事情,但大多數(shù)人對(duì)此可能并沒(méi)有深刻認(rèn)識(shí)

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

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

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

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《一次因mongo查詢不存在字段引發(fā)的事故記錄》,本文關(guān)鍵詞  一次,因,mongo,查詢,不存在,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《一次因mongo查詢不存在字段引發(fā)的事故記錄》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于一次因mongo查詢不存在字段引發(fā)的事故記錄的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    视频| 武夷山市| 永年县| 彭州市| 隆子县| 宜都市| 乌拉特后旗| 通榆县| 乌拉特中旗| 罗山县| 手机| 西林县| 呼图壁县| 镇平县| 玉门市| 调兵山市| 卢氏县| 甘洛县| 太保市| 集贤县| 梅河口市| 新巴尔虎左旗| 德保县| 西华县| 和平县| 全椒县| 云霄县| 荆州市| 新民市| 盖州市| 东安县| 渝北区| 吉林省| 渭源县| 江北区| 密山市| 时尚| 吉安市| 井冈山市| 甘孜县| 二手房|