日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql的cpu飙升到500_[MySQLCPU]线上飙升800%,load达到12的解决过程

發布時間:2024/7/5 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql的cpu飙升到500_[MySQLCPU]线上飙升800%,load达到12的解决过程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

接到報警通知,負載過高,達到800%,load也過高,有11了。

MySQL版本為5.6.12-log

1 top 之后,確實是mysqld進程占據了所有資源。

2 查看error日志,無任何異常

3 show eninge innodb status\G,沒有死鎖信息。

4 show full processlist;

沒有耗時非常大的慢sql再跑??床l,當前的線程總數量也才30個左右。

5 查看iostat,讀寫正常。

到底是什么問題呢?查看slow log,發現如下SQL,頻繁執行,耗時在5秒之間,explain有Using join buffer (Block Nested Loop)

mysql> explain selectweb_page_object.web_page_object_id,-> web_page_object.object_id,-> web_div_name,web_page_object.position_sort,web_page_object.end_time,om1.label,om1.file,jump_url,om2.label as label1,om2.file asfile1-> from web_page_div,web_page_object,object_media as om1,object_media asom2-> where web_page_div.id=web_page_object.web_page_div_id-> and web_page_object.object_media_id=om1.object_media_id-> and web_page_div.web_page_id=1200

-> and if(web_page_object.object_media_id1=0,-> web_page_object.object_media_id=om2.object_media_id,-> web_page_object.object_media_id1=om2.object_media_id)->

-> and '2014-05-01 15:09:49'>=start_time-> and '2014-05-01 15:09:49'<=end_time->

-> and object_status=0

-> order by web_page_div.id,web_page_object.position_sort;

+----+-------------+-----------------+--------+-----------------------+---------+---------+-------------------------------------------+-------+----------------------------------------------------+

| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |

+----+-------------+-----------------+--------+-----------------------+---------+---------+-------------------------------------------+-------+----------------------------------------------------+

| 1 | SIMPLE | web_page_object | ALL | object_media_id_index | NULL | NULL | NULL | 51165 | Using where; Using temporary; Using filesort |

| 1 | SIMPLE | web_page_div | eq_ref | PRIMARY,idx | PRIMARY | 4 | db_jiapin.web_page_object.web_page_div_id | 1 | Using where |

| 1 | SIMPLE | om1 | eq_ref | PRIMARY | PRIMARY | 4 | db_jiapin.web_page_object.object_media_id | 1 | Using where |

| 1 | SIMPLE | om2 | ALL | NULL | NULL | NULL | NULL | 74759 | Using where; Using join buffer (Block Nested Loop) |

+----+-------------+-----------------+--------+-----------------------+---------+---------+-------------------------------------------+-------+----------------------------------------------------+

Using join buffer (Block Nested Loop)

看SQL是where后面的if判斷引起的,拆分if之后,就正常了,SQL耗時不到0.1秒。數據庫load也降下來了。

還記錄以前碰到的

(Block Nested Loop)的案例是 join后面的on條件里面有or判斷。

也會引起Block Nested Loop,導致數據庫負載過高。

總結

以上是生活随笔為你收集整理的mysql的cpu飙升到500_[MySQLCPU]线上飙升800%,load达到12的解决过程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。