mysql高水位線問題

來源:互聯網
上載者:User

標籤:代碼   估計   where   search   images   需要   查詢   百度   問題分析   

資料庫 水位線的概念大家應該都有所瞭解,以前我個人覺得這個基本上是純理論的,跟我們實際開發寫sql好像沒什麼關係。但是在解決一次慢sql的過程中遇到了水位線的問題。  問題現象:功能出現慢查。慢查sql為    DELETE    FROM tb_cust_search_task_detail    WHERE task_id = 2024;  問題分析:大家看了這個sql估計第一反應都是資料量太大了所以導致了慢查,而且會員檢索確實存在資料量很大的問題。所以第一個冒出來的解決方案就是 分批刪除。然後我就看了下大概多少資料量能導致這樣的慢查 一個任務下才3萬多個明細就能導致刪除超過5分鐘??當時有點懷疑,不過我還是沒有細究,還是按照分批刪除敲代碼了。 敲完代碼當然就是要測試下速度, 在sqladmin裡查發現SELECT * FROM tb_cust_search_task_detail    WHERE task_id = 2024    LIMIT 10000 居然查不出來,超過30秒了。。。。。 EXPLAIN看下 掃描行數居然近億了,總量不是才3萬多麼,也用到索引了,為什麼rows值還是這麼大??? 然後看了比這個數量多的其他task_id的執行計畫都是正常的。。 然後我就各種百度了下,越看越覺得可能高水位線的問題。看了下面的背景大家應該都知道為什麼了(這裡說下這個task_id的背景,這個task_id是個週期性任務,每個半小時就會重新檢索一遍,然後把之前的全部delete掉,再insert。這樣就是做很頻繁的delete,insert) 那後面就是要解決怎麼降低這個水位線的問題,如果解決不了,就是改成分批刪除一樣還是慢查。找了DBA一起討論這個問題,dba給的建議就是讓我加個單獨的task_id索引,理由單獨的索引更好查詢更快(可惜後面mysql沒有選用這個索引),順便他做下 表重組,降低高水位線。 重組之後的執行計畫,就很正常了  問題的解決方案: 1. 提交指令碼給dba,讓dba進行表重組,解決目前高水位線的問題2. 針對於周期性的檢索任務,不再採用先全部delete,再insert。不然後面還是有高水位線的問題。 新的方式是 :重新檢索的資料跟老的對比,該insert的insert,該delete的delete3. 針對於頁面功能重新檢索,編輯的地方,需要刪除檢索明細的(這種刪除次數不是很多的)。改成分批刪除 如果很頻繁的做delete和insert的時候,可能就要考慮下會不會也存在這種隱患問題。

mysql高水位線問題

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.