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

歡迎訪問 生活随笔!

生活随笔

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

数据库

mysql突然出现慢sql_Mysql开启慢SQL并分析原因

發布時間:2025/3/15 数据库 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql突然出现慢sql_Mysql开启慢SQL并分析原因 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第一步.開啟mysql慢查詢

方式一:修改配置文件

Windows:Windows 的配置文件為 my.ini,一般在 MySQL 的安裝目錄下或者 c:\Windows 下。

Linux:Linux 的配置文件為 my.cnf ,一般在 /etc 下

在 my.ini 增加幾行:

[mysqlld]

long_query_time=2

#5.0、5.1等版本配置如下選項

log-slow-queries="mysql_slow_query.log"

#5.5及以上版本配置如下選項

slow-query-log=On

slow_query_log_file="mysql_slow_query.log"

log-query-not-using-indexes

第一句使用來定義查過多少秒的查詢算是慢查詢,我這里定義的是2秒

第二句使用來定義慢查詢日志的路徑(因為是windows,所以不牽涉權限問題)

第三句就是記錄下沒有使用索引的query

第二步:查看關于慢查詢的狀態

方式二:通過MySQL數據庫開啟慢查詢

上文的配置需要重啟mysql server進程mysqld才會生效。但是很多時候,尤其是產品運營環境,不希望每次修改都需要重新啟動mysql服務器,也希望能在某些特定時間記 錄。MySQL5.1給我們提供了更為靈活的運行時控制,使得你不必重新啟動mysql服務器,也能選擇性地記錄或者不記錄某些slow queries。

MySQL5.1中,提供了全局變量slow_query_log、slow_query_log_file可以靈活地控制enable/disable慢查詢。同時可以通過long_query_time設置時間

#//啟用slow query記錄

#注意:設置了slow_query_log全局變量, log_slow_queries也會隱性地跟著改變

mysql>set global slow_query_log=ON

不幸運的是,在MySQL5.0并沒有提供類似的全局變量來靈活控制,但是我們可以通過將long_query_time設置得足夠大來避免記錄某些查詢語句。比如

mysql>set global long_query_time = 3600;

mysql>set global log_querise_not_using_indexes = ON;

MySQL5.0, 不關服務的情況下,希望不記錄日志的辦法是將日志文件成為/dev/null的符號鏈接(symbolic link)。注意:你只需要在改變后運行FLUSH LOGS以確定MYSQL釋放當前的日志文件描述符,重新把日志記錄到/dev/null

和MySQL5.0不同,MySQL5.1可以在運行時改變日記行為,將日志記錄到數據庫表中。只要將mysql全局變量log_output設置為 TABLE即可。MySQL會將日志分別記錄到表mysql.gengera_log和mysql.slow_log二張表中。但是,我們推薦將日志記錄 在日記文件中。

mysql> show variables like ‘log_output'\G

Variable_name: log_output

Value: FILE

mysql>set global log_output='table';

缺陷與審記

雖然記錄了slow query能夠幫助你優化產品。但是MySQL目前版本,還有幾大蹩足的地方。

1.MySQL5.0版本, long_query_time時間粒度不夠細,最小值為1秒。對于高并發性能的網頁腳本而言,1秒出現的意義不大。即出現1秒的查詢比較少。直到mysql5.1.21才提供更細粒度的long_query_time設定.

2.不能將服務器執行的所有查詢記錄到慢速日志中。雖然MySQL普通日志記錄了所有查詢,但是它們是解析查詢之前就記錄下來了。這意味著普通日志沒辦法包含諸如執行時間,鎖表時間,檢查行數等信息。

3.如果開啟了log_queries_not_using_indexes選項,slow query日志會充滿過多的垃圾日志記錄,這些快且高效的全表掃描查詢(表小)會沖掉真正有用的slow queries記錄。比如select * from category這樣的查詢也會被記錄下來。

通過microslow-patch補丁可使用更細的時間粒度,和記錄所有執行過的sql語句。不過,使用這個補訂不得不自己編譯MySQL,出于穩定性考濾,我們推薦在開發測試環境,可以打上這個補丁,享受這個補丁帶來的便利。在運營環境盡量不要這么做…

第二步.驗證慢查詢是否開啟

執行如下SQL語句來查看mysql慢查詢的狀態

執行結果會把是否開啟慢查詢、慢查詢的秒數、慢查詢日志等信息打印在屏幕上。

/*查看慢查詢時間 */

show variables like "long_query_time";默認10s

/*查看慢查詢配置情況 */

show status like "%slow_queries%";

/*查看慢查詢日志路徑 */

show variables like "%slow%";

第三步:執行一次慢查詢操作

其實想要執行一次有實際意義的慢查詢比較困難,因為在自己測試的時候,就算查詢有20萬條數據的海量表,也只需要0.幾秒。我們可以通過如下語句代替:

SELECT SLEEP(10);

第四步:查看慢查詢的數量

通過如下sql語句,來查看一共執行過幾次慢查詢:

show global status like '%slow%';

mysql日志的配置:

注意:這些日文件在mysql重啟的時候才會生成

#記錄所有sql語句

log=E:/mysqllog/mysql.log

#記錄數據庫啟動關閉信息,以及運行過程中產生的錯誤信息

log-error=E:/mysqllog/myerror.log

# 記錄除select語句之外的所有sql語句到日志中,可以用來恢復數據文件

log-bin=E:/mysqllog/bin

#記錄查詢慢的sql語句

log-slow-queries=E:/mysqllog/slow.log

#慢查詢時間

long_query_time=2

第四步:分析慢查詢日志

方式一:通過工具分析

MySQL自帶了mysqldumpslow工具用來分析slow query日志,除此之外,還有一些好用的開源工具。比如MyProfi(下載地址:http://sourceforge.net/projects/myprofi/)、mysql-log-filter,當然還有mysqlsla

以下是mysqldumpslow常用參數說明,詳細的可應用mysqldumpslow -help查詢。

-s,是表示按照何種方式排序,c、t、l、r分別是按照記錄次數、時間、查詢時間、返回的記錄數來排序(從大到小),ac、at、al、ar表示相應的倒敘。

-t,是top n的意思,即為返回前面多少條數據。

-g,后邊可以寫一個正則匹配模式,大小寫不敏感。

接下來就是用mysql自帶的慢查詢工具mysqldumpslow分析了(mysql的bin目錄下),我這里的日志文件名字是host-slow.log。

列出記錄次數最多的10個sql語句

mysqldumpslow -s c -t 10 host-slow.log

列出返回記錄集最多的10個sql語句

mysqldumpslow -s r -t 10 host-slow.log

按照時間返回前10條里面含有左連接的sql語句

mysqldumpslow -s t -t 10 -g "left join" host-slow.log

使用mysqldumpslow命令可以非常明確的得到各種我們需要的查詢語句,對MySQL查詢語句的監控、分析、優化起到非常大的幫助。

方式二:直接分析mysql慢查詢日志

日志部分內容如下:

# Time: 121017 17:38:54

# User@Host: root[root] @ localhost [127.0.0.1]

# Query_time: 3.794217 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 4194304

SET timestamp=1350466734;

select * from wei where text='orange';

# Time: 121017 17:46:22

# User@Host: root[root] @ localhost [127.0.0.1]

# Query_time: 3.819219 Lock_time: 0.000000 Rows_sent: 0 Rows_examined: 4194304

SET timestamp=1350467182;

select * from wei where text='xishizhaohua';

其實定位到了慢查詢語句就已經完成了一大不了,執行explain或者desc命令查看慢查詢語句,如下圖:

問題很明顯,解決方式也很明顯,建索引了。

mysql> create index text_index on wei(text);

Query OK, 4194304 rows affected (1 min 58.07 sec)

Records: 4194304 Duplicates: 0 Warnings: 0

然后在執行查詢操作,用時明顯少了很多。

mysql> select * from wei where text='orange';

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

| id | text |

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

| 4103519 | orange |

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

1 row in set (0.33 sec)

Slow Query日志,雖然幫助你記錄了那些執行過了的SQL語句。但它不是萬能的,意義可能沒有你想象的那么大。它只告訴了你哪些語句慢,但是為什么慢?具體 原因,還是需要你自己去分析,不斷的調試。也許,你只需要換一條更有效的sql語句,也許你只需簡單地增加一個索引,但也有可能你需要調整你應用程序的設 計方案。比如,上面那條語句是很明顯,它檢查了600多萬行數據。不幸的是,并不是每條語句都這么明顯。也許還有別的原因,比如:

*鎖表了,導致查詢處于等態狀態。lock_time顯示了查詢等待鎖被翻譯的時間

*數據或索引沒有被緩存。常見于第一次啟動服務器或者服務器沒有調優

*備份數據庫,I/O變慢

*也許同時運行了其它的查詢,減少了當前查詢

所以,不要過于緊張日志文件某條記錄,而應該理性地審記,找出真正的原因。如果經常出現的slow query需要特別注意。如果個別出現,則做一些常規檢查即可。我們建議,統計并且形成基準報告,進行比較排除,比胡亂瞎撞有用。希望大家不要在這部分過于浪費時間與精力。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關內容請查看下面相關鏈接

您可能感興趣的文章:解決MySQl查詢不區分大小寫的方法講解

Mysql優化策略(推薦)

詳解MySQL是如何解決幻讀的

詳解使用navicat連接遠程linux mysql數據庫出現10061未知故障

詳解mysql數據庫增刪改操作

使用shell腳本來給mysql加索引的方法

MySQL字符集亂碼及解決方案分享

MySQL執行update語句和原數據相同會再次執行嗎

Mysql查詢很慢卡在sending data的原因及解決思路講解

想取消錯誤的mysql命令怎么辦?

總結

以上是生活随笔為你收集整理的mysql突然出现慢sql_Mysql开启慢SQL并分析原因的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 你懂的在线免费观看 | 96av在线视频| 日韩欧美一区二区三区 | 色小姐在线视频 | 伊人55 | 亚洲综合久久婷婷 | 少妇29p | 精品免费在线 | 国产不卡精品 | 中文一区二区在线 | 日韩成人av网站 | 国产老熟妇精品观看 | 性高潮久久久久久久久久 | 午夜成人亚洲理伦片在线观看 | 亚洲一区二区三区四区在线播放 | 午夜天堂视频 | 91av亚洲 | 亚洲精品一区二三区不卡 | 91爱在线观看 | 另类激情亚洲 | 亚洲精品在线视频 | 理论片在线观看视频 | 日本裸体视频 | a视频免费观看 | 中文字幕亚洲精品在线 | 亚洲精品视频导航 | 日日噜噜夜夜狠狠久久丁香五月 | 亚洲一区免费视频 | 午夜成人亚洲理伦片在线观看 | 免费特黄视频 | 天堂999| 久久电影一区二区 | 日本久久精品视频 | 亚洲视频二 | 国产一级一级国产 | 国产精品无码一区二区无人区多人 | 人妻激情偷乱视频一区二区三区 | 高清日韩 | 亚洲欧美一区二区三区四区 | 毛片久久久 | 成人自拍av | 国产第一页精品 | 永久av在线免费观看 | 欧美成人综合 | 91福利视频在线观看 | 国产拍拍拍 | 蜜桃视频在线播放 | 激情啪啪网站 | 国产在线一区不卡 | 亚洲色偷精品一区二区三区 | 国产在线综合视频 | 噜噜色网| 91涩涩涩 | 羞羞答答av | 亚洲欧美成人 | 中文久草 | 伊人网在线视频 | av中文字幕免费在线观看 | 黑人又大又粗又长 | 亚洲视频一区二区三区四区 | 欧美综合社区 | 草草久久久无码国产专区 | 亚洲国产成人精品激情在线 | 久久精品国产熟女亚洲AV麻豆 | 日批视频免费播放 | 亚洲欧美国产一区二区三区 | 久久久久久久国产精品视频 | 粉嫩欧美一区二区三区 | 青娱乐欧美 | 日本一级大片 | 一区二区三区四区高清视频 | 亚洲AV无码阿娇国产精品 | 久久精品天天中文字幕人妻 | 成人国产精品免费观看视频 | 伊人天堂网| 黄视频网站在线看 | 中文字幕免费高清视频 | 久久精品国产av一区二区三区 | 成人免费无码大片a毛片 | 不卡视频在线 | 国产成人av在线 | 免费无码国产精品 | 九九精品在线视频 | 黄色一级大片免费看 | 久久精品夜 | 欧美性生交片4 | 中文字幕高清在线免费播放 | 久久成人精品视频 | 另一种灿烂生活 | 成人午夜影片 | 蜜桃av在线看 | 国产又粗又硬又黄的视频 | 成年性生交大片免费看 | 国产91精品ai换脸 | 国产字幕在线观看 | 高清国产在线 | www.亚洲一区二区 | 日韩mv欧美mv国产网站 | 一级美女大片 |