成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何定位MySQL慢查詢?

數據庫 MySQL

[[391577]]

 相信大家在平時工作中都有過 SQL 優化經歷,那么在優化前就必須找到慢 SQL 方可進行分析。這篇文章就介紹下如何定位到慢查詢。

慢查詢日志是 MySQL 內置的一項功能,可以記錄執行超過指定時間的 SQL 語句。

以下是慢查詢的相關參數,大家感興趣的可以看下:

參數 含義
log_output 日志輸出位置,默認為 FILE,即保存為文件,若設置為 TABLE,則將日志記錄到 mysql.show_log 表中,支持設置多種格式
slow_query_log_file 指定慢查詢日志文件的路徑和名字,可使用絕對路徑指定,默認值是主機名-slow.log,位于配置的 datadir 目錄
long_query_time 執行時間超過該值才記錄到慢查詢日志,單位為秒,默認為 10
min_examined_row_limit 對于查詢掃描行數小于此參數的SQL,將不會記錄到慢查詢日志中,默認為 0
log_queries_not_using_indexes 是否將未使用索引的 SQL 記錄到慢查詢日志中,開啟此配置后會無視 long_query_time 參數,默認為 OFF
log_throttle_queries_not_using_indexes 設定每分鐘記錄到日志的未使用索引的語句數目,超過這個數目后只記錄語句數量和花費的總時間,默認為 0
log-slow-admin-statements 記錄執行緩慢的管理 SQL,如 ALTER TABLE、ANALYZE TABLE、CHECK TABLE、CREATE INDEX、DROP INDEX、OPTIMIZE TABLE 和 REPAIR TABLE,默認為 OFF
log_slow_slave_statements 記錄從庫上執行的慢查詢語句,如果 binlog 的值為 row,則失效,默認為 OFF

開啟慢查詢

有兩種方式可以開啟慢查詢

  1.  修改配置文件
  2.  設置全局變量

方式一需要修改配置文件 my.ini,在[mysqld]段落中加入如下參數: 

  1. [mysqld]  
  2. log_output='FILE,TABLE'  
  3. slow_query_log='ON'  
  4. long_query_time=0.001 

然后需要重啟 MySQL 才可以生效,命令為 service mysqld restart

方式二無需重啟即可生效,但是重啟會導致設置失效,設置的命令如下所示: 

  1. SET GLOBAL slow_query_log = 'ON' 
  2. SET GLOBAL log_output = 'FILE,TABLE' 
  3. SET GLOBAL long_query_time = 0.001; 

這樣就可以將慢查詢日志同時記錄在文件以及 mysql.slow_log 表中。

通過第二種方式開啟慢查詢日志,然后使用全表查詢語句 SELECT * FROM user

然后再查詢慢查詢日志:SELECT * FROM mysql.slow_log,可以發現其中有這樣一條記錄:

slow_log

其中,start_time 為執行時間,user_host 為用戶的主機名,query_time 為查詢所花費的時間,lock_time 為該查詢使用鎖的時間,rows_sent 為這條查詢返回了多少數據給客戶端,rows_examined 表示這條語句掃描了多少行,db 為數據庫,sql_text 為這條 SQL,thread_id 為執行這條查詢的線程 id。

這樣我們就可以通過 slow_log 表的數據進行分析,然后對 SQL 進行調優了。

以上是通過 Table 來進行分析的,下面來通過文件的慢查詢是怎么樣的。

如果不知道文件保存在哪里,可以使用 SHOW VARIABLES LIKE '%slow_query_log_file%' 來查看文件保存位置,打開慢查詢日志文件,可以看出每五行表示一個慢 SQL,這樣查看比較費事,可以使用一些工具來查看。

慢查詢日志文件

mysqldumpslow

MySQL 內置了 mysqldumpslow 這個工具來幫助我們分析慢查詢日志文件,Windows 環境下使用該工具需要安裝 Perl 環境。

可以通過 -help 來查看它的命令參數:

mysqldumpslow help

比如我們可以通過 mysqldumpslow -s t 10 LAPTOP-8817LKVE-slow.log 命令得到按照查詢時間排序的 10 條 SQL 。

 

mysqldumpslow 結果

pt-query-digest

除此之外還有 pt-query-digest,這個是 Percona Toolkit 中的工具之一,下載地址:https://www.percona.com/downloads/percona-toolkit/LATEST/,如果是 Windows 系統,可以在安裝 Perl 的環境下,把腳本下載下來:https://raw.githubusercontent.com/percona/percona-toolkit/3.x/bin/pt-query-digest

下面先對 pt-query-digest 進行簡單的介紹:

pt-query-digest 是用于分析 MySQL 慢查詢的一個第三方工具,可以分析 binlog、General log 和 slowlog,也可以通過 showprocesslist 或者通過 tcpdump 抓取的 MySQL 協議數據來進行分析,可以把分析結果輸出到文件中,分析過程是先對查詢語句的條件進行參數化,然后對參數化以后的查詢進行分組統計,統計出各查詢的執行時間、次數、占比等,可以借助分析結果找出問題進行優化。

有興趣的可以先下載下來自己玩玩,將在后續的文章中對 pt-query-digest 工具進行詳細介紹。

show processlist

還有種情況是慢查詢還在執行中,慢查詢日志里是找不到慢 SQL 呢,這個時候可以用 show processlist 命令來尋找慢查詢,該命令可以顯示正在運行的線程,執行結果如下圖所示,可以根據 Time 的大小來判斷是否為慢查詢。

show processlist

總結

這篇文章主要講解了如何定位慢查詢以及簡單介紹了 mysqldumpslow 和 pt-query-digest 工具,后續還會講解 explain 和  show profile 以及 trace 等常用的方法。

你在定位慢查詢或者優化 SQL 時,都會用到哪些方法呢? 

 

責任編輯:龐桂玉 來源: 數據庫開發
相關推薦

2023-11-30 15:37:37

MySQL數據庫

2011-06-28 08:32:40

MySQL慢查詢日志

2019-09-18 08:06:08

Redis數據庫命令

2017-04-01 19:00:25

MySQL慢查詢

2018-09-13 09:42:30

數據庫Redis慢查詢

2010-10-14 15:07:44

MySQL慢查詢

2020-09-13 13:05:41

MySQL慢查詢數據

2022-12-29 07:37:19

Java項目慢業務

2020-06-05 09:21:20

MySQL慢查詢數據庫

2022-09-27 08:40:44

慢查詢MySQL定位優化

2018-10-12 16:45:10

MySQL查詢日志數據庫

2010-11-25 16:29:26

MySQL慢日志查詢

2010-06-02 13:46:19

MySQL慢查詢

2022-05-17 08:24:58

查詢日志MySQL

2009-05-13 11:13:07

MySQL定位性能故障

2019-09-11 10:23:58

Redis性能存儲

2017-09-18 15:20:02

MySQL慢查詢日志配置

2024-05-28 08:32:18

2017-05-23 16:26:26

MySQL優化處理

2022-05-11 09:16:55

Linux網絡
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 在线a视频网站 | 国产一级特黄真人毛片 | 精品一区二区免费视频 | 久久999| 日本一二三区在线观看 | avtt国产 | 狠狠的干狠狠的操 | 天堂网色 | 亚洲国产成人在线观看 | 欧美久久一区二区三区 | 亚洲综合国产 | 国产精品久久久久久久久久免费看 | 天天操网 | 久久亚洲欧美日韩精品专区 | 国产精品久久久久久久免费观看 | 丝袜美腿一区二区三区动态图 | 欧美色综合网 | 成人日韩| 波多野结衣一区二区 | 精品久久99| 黄色av网站在线观看 | 91 在线 | 中文字幕精 | 国产精品美女久久久久久免费 | 亚洲视频一区在线观看 | 国产麻豆乱码精品一区二区三区 | 99热视 | 很黄很污的网站 | 永久av| 狠狠爱免费视频 | 免费三级网站 | 国产伦精品一区二区三区视频金莲 | 91看片在线观看 | 一本在线| 亚洲精品国产一区 | 天天操操 | 亚洲电影免费 | 亚洲国产网 | 午夜午夜精品一区二区三区文 | 欧美日韩国产在线 | 午夜影院中文字幕 |