亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > MySQL > 正文

記一次因線上mysql優化器誤判引起慢查詢事件

2024-07-24 13:12:20
字體:
來源:轉載
供稿:網友

前言:

     收到瘋狂的慢查詢及請求超時報警,通過metrics分析出來自mysql請求的異常,cli —> show proceslist 看到很多慢查詢。 先前該sql是沒有的,后面因為數據量的增長才出現了這問題。 雖然feeds表大到一個億,但因為feeds流信息有近期熱的特征,所以不是因為 innodb_buffer_pool_size 低效引起的io頻繁。 后來經過進一步explain執行計劃分析得出了原因,mysql查詢優化器選擇了他認為高效的索引。

mysql查詢優化器大多數情況是靠譜的!  但是你的sql語言含有多個索引時就要注意了,往往最后的結果令人有些彷徨了。因為mysql同一個sql只能使用一個索引,那么選擇哪個呢? 在數據量小時候,mysql優化器會把主鍵索引后置,優先使用 index和unique 。 當你達到一個數據量級后,又因為你的查詢操作有 in ,那么mysql查詢優化器很可能會選用主鍵的 !

記住一句話,mysql查詢優化是基于檢索成本考慮,而不是基于時間成本考慮。 優化器是根據現有的數據狀態來推算代價,而不是真的去執行一遍sql.

所以,mysql優化器并不是每次都可以達到優化的效果的。 它并不能準確預估代價,如果要準確得到走各個索引的代價就要去真的執行一遍才能知道,所以代價分析只是做了一個預估,既然是預估那么就有誤判。

我們這里說的表是feed信息流表,我們知道feeds信息流表訪問不僅頻繁,而且數據量也很大。 但是這個表的數據結構很簡單,索引也簡單.   一共就兩個索引,一個是主鍵索引, 一個是unique唯一鍵索引。

如下,該表的量級已經到億級別了,因為有足夠多的cache前頂,又因為這樣那樣的原因,所以沒來的及做分庫分表。

MySQL,慢查詢,MySQL優化器,優化,MySQL慢查詢優化

問題是這樣的, 當數據量級不到一個億的時候,mysql優化器選擇使用 index索引, 當數據量級超過一個億后,mysql查詢優化器選擇使用 主鍵索引了。  這樣帶來的問題就是 查詢速度太慢。

這是正常情況下:

mysql> explain SELECT * FROM `feed` WHERE user_id IN (116537309,116709093,116709377)     AND cid IN (1001,1005,1054,1092,1093,1095)  AND id <= 128384713 ORDER BY id DESC LIMIT 0, 11 /G;*************************** 1. row ***************************      id: 1 select_type: SIMPLE    table: feed  partitions: NULL     type: rangepossible_keys: PRIMARY,feed_user_target     key: feed_user_target   key_len: 6     ref: NULL     rows: 18   filtered: 50.00    Extra: Using where; Using index; Using filesort1 row in set, 1 warning (0.00 sec)

同樣的sql語句,在數據量有較大變化后,mysql查詢優化器對索引的選擇也有了變化。

mysql> explain SELECT * FROM `feed` WHERE user_id IN (116537309,116709093,116709377)    AND cid IN (1001,1005,1054,1092,1093,1095)    AND id <= 128384713 ORDER BY id DESC LIMIT 0, 11 /G;*************************** 1. row ***************************      id: 1 select_type: SIMPLE    table: feed     type: rangepossible_keys: PRIMARY,feed_user_target     key: PRIMARY   key_len: 4     ref: NULL     rows: 11873197    Extra: Using where1 row in set (0.00 sec)

那么解決方法是使用 force index,強制查詢優化器使用我們給出的index 。 我這里是python開發環境,常見的python orm都有force index,ignore index,user index 參數的。

explain  SELECT * FROM `feed` force index (feed_user_target) WHERE user_id IN (116537309,116709093,116709377) ...

那么我們應該怎么預防這種 因為數據的增進,mysql優化器選擇了一個低效索引的問題呢?

針對這個問題請教了幾個廠的dba,得到的答案和我們的方法是一樣的。 都是只能通過后期的慢查詢來發現問題,然后在sql語句中指定force index來解決索引問題。 另外,在系統上線初期就會做這類問題的規避,但往往業務開發人員初期都會配合dba們的審查工作,但后期為了省事,或者說自以為是認為沒有問題,所以造成了 mysql查詢事故。

我自己對于mysql優化器選擇索引規則一知半解的,后面準備花時間好好研究下規則


注:相關教程知識閱讀請移步到MYSQL教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色777狠狠综合秋免鲁丝| 欧美在线视频一二三| 色噜噜狠狠色综合网图区| 久久夜色精品亚洲噜噜国产mv| 久久久免费精品| 国产丝袜一区二区三区| 成人高清视频观看www| 国产精品偷伦视频免费观看国产| 4k岛国日韩精品**专区| 中文字幕精品久久久久| 97av在线影院| 欧洲成人在线观看| 26uuu另类亚洲欧美日本一| 91青草视频久久| 久久久女女女女999久久| 米奇精品一区二区三区在线观看| 日本高清不卡在线| 久久久国产精品亚洲一区| 国产成人一区二区三区小说| 亚洲free性xxxx护士hd| 国产午夜一区二区| 日韩av123| 久久亚洲综合国产精品99麻豆精品福利| 久久天堂电影网| 亚洲大胆美女视频| 日本高清久久天堂| 91亚洲精品一区| 欧美精品videosex性欧美| 午夜欧美大片免费观看| 97精品久久久中文字幕免费| 国产美女高潮久久白浆| 国产91在线播放| 国产在线播放91| 美女精品视频一区| 欧美亚洲在线播放| 欧美一级在线亚洲天堂| 亚洲a级在线播放观看| 久久在线观看视频| 色综合色综合久久综合频道88| 日产日韩在线亚洲欧美| 日韩中文av在线| 国产精品一区二区在线| 国产精品扒开腿做爽爽爽男男| 国产成人高潮免费观看精品| 91国产美女在线观看| 欧美亚洲第一区| 中文在线资源观看视频网站免费不卡| 992tv成人免费影院| 亚洲男人天堂网站| 亚洲国产中文字幕在线观看| 国产一区深夜福利| 亚洲已满18点击进入在线看片| 亚洲人成在线观看网站高清| 亚洲人精品午夜在线观看| 国产极品jizzhd欧美| 欧美日韩一区免费| 欧美乱妇40p| 91色精品视频在线| 欧美精品一本久久男人的天堂| 亚洲一区999| 91精品国产乱码久久久久久蜜臀| 国产精品视频一区二区高潮| 少妇av一区二区三区| 久久精品免费电影| 欧美成人精品影院| 午夜精品一区二区三区在线视| 欧美国产精品va在线观看| 日韩高清中文字幕| 欧美性受xxx| 国产精品一二三在线| 日本久久久久亚洲中字幕| 国产精品无码专区在线观看| 亚洲国产精彩中文乱码av在线播放| 欧美精品在线观看91| 国产视频精品久久久| 久久成人精品视频| 欧美国产一区二区三区| 日韩av影视在线| 成人淫片在线看| 欧美国产日韩在线| 国产精品国产三级国产专播精品人| 欧美在线欧美在线| 亚洲人线精品午夜| 亚洲香蕉伊综合在人在线视看| 亚洲免费视频一区二区| 欧美性色xo影院| 国产ts一区二区| 亚洲午夜av久久乱码| 一色桃子一区二区| 日韩一区二区精品视频| 在线精品视频视频中文字幕| 国产精品视频午夜| 亚洲视频网站在线观看| 日韩在线观看免费高清完整版| 久久久久久久久久久久久久久久久久av| 欧美野外wwwxxx| 国产精品91久久| 日本亚洲欧美三级| 性欧美视频videos6一9| 久久久伊人欧美| 亚洲一级黄色片| 成人在线播放av| 日韩精品视频在线观看免费| 91香蕉电影院| 97视频在线免费观看| 日韩在线欧美在线国产在线| 欧美亚洲第一区| 亚洲男人av电影| 亚洲精品wwwww| 性亚洲最疯狂xxxx高清| 91a在线视频| 亚洲一区二区日本| 久久久久久久久久久久av| 久久香蕉国产线看观看av| 国产视频丨精品|在线观看| 成人精品福利视频| 久久国内精品一国内精品| 亚洲性69xxxbbb| 国产精品久久久久久久久久新婚| 欧美中文字幕在线| 欧美精品激情在线观看| 精品伊人久久97| 亚洲欧美成人在线| 欧美电影在线观看网站| 日韩美女在线观看一区| 在线观看亚洲区| 日韩av一区在线观看| 57pao成人永久免费视频| 国产精品一区二区久久| 欧美激情乱人伦| 中日韩美女免费视频网站在线观看| 国产精品电影网| 精品久久久久久久久国产字幕| wwwwwwww亚洲| 久久精品国产欧美激情| 日韩福利在线播放| 国产精品嫩草影院一区二区| 69久久夜色精品国产7777| 韩国一区二区电影| 国产精品一区久久久| 黄色成人在线播放| 精品国产欧美一区二区三区成人| 伦理中文字幕亚洲| 久久久伊人日本| 国产精品av免费在线观看| 在线看片第一页欧美| 91久久夜色精品国产网站| 欧美疯狂xxxx大交乱88av| 91精品国产自产91精品| 中文字幕精品网| 欧美日韩不卡合集视频| 91在线观看免费高清| 国产剧情日韩欧美| 一区二区国产精品视频| 日韩在线观看网址| 美女久久久久久久| 日韩精品福利网站| 欧美一区二区三区免费视| 51精品国产黑色丝袜高跟鞋| 欧美国产视频日韩| 欧美极品在线播放| 亚洲午夜国产成人av电影男同| 国产成人av网址| 中文字幕不卡av|