中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MySQL中如何啟用并分析慢查詢日志

發布時間:2021-09-10 09:46:09 來源:億速云 閱讀:179 作者:柒染 欄目:MySQL數據庫

MySQL中如何啟用并分析慢查詢日志,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

MySQL中如何啟用并分析慢查詢日志

Mysql有一項功能可以記錄長時間查詢的慢記錄,具體是多長時間可以自己配置,但是慢查詢也未必就是不良的SQL,也可能受其他查詢影響,或者是系統資源限制導致的,它也是我們常用的性能分析工具。【相關推薦:mysql視頻教程】

MySQL的慢查詢日志由long_query_timemin_examined_row_limit控制的,前者意思是如果查詢花費的時間超過這么多秒,MySQL服務器就是在啟用慢查詢日志的情況下,將這條記錄到慢查詢日志文件中。

啟用慢查詢日志

要在 MySQL 中啟用慢查詢日志,請按照下列步驟操作:

首先看看MySQL中關于慢查詢的狀態。

MariaDB [(none)]> show variables like '%slow%';
+------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+                                                                                           
| Variable_name                | Value                                                                                                                                |                                                                                           
+------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+                                                                                           
| log_slow_admin_statements    | ON                                                                                                                                   |
| log_slow_disabled_statements | sp                                                                                                                                   |
| log_slow_filter              | admin,filesort,filesort_on_disk,filesort_priority_queue,full_join,full_scan,query_cache,query_cache_miss,tmp_table,tmp_table_on_disk |
| log_slow_rate_limit          | 1                                                                                                                                    |
| log_slow_slave_statements    | ON                                                                                                                                   |
| log_slow_verbosity           |                                                                                                                                      |
| slow_launch_time             | 2                                                                                                                                    |
| slow_query_log               | OFF                                                                                                                                  |
| slow_query_log_file          | hxl-slow.log                                                                                                                         |
+------------------------------+--------------------------------------------------------------------------------------------------------------------------------------+
9 rows in set (0.001 sec)

首先看slow_query_log的狀態,他代表慢查詢日志是否開啟。該值可以是0或OFF表示禁用,1或ON表示啟用。日志輸出的目的地由log_output系統變量控制,如果該值為NONE,則即使啟用了慢查詢日志,也不會寫入到日志中,log_output變量的取值如下:

  • TABLE: (默認)向mysql.general_log表寫入一般查詢,向表mysql.slow_log寫入慢速查詢 。

  • FILE:將一般和慢速查詢日志寫入文件系統。

  • NONE – 禁用日志記錄。

還有general_log_fileslow_query_log_file 變量代表查詢日志和慢查詢日志文件的名稱。可以在服務器啟動或運行時設置這些變量。

啟動慢查詢日志

MySQL中默認關閉了慢查詢日志功能,因此要打開此功能,我們需要將slow_query_log設置為ON,如下所示。

SET GLOBAL slow_query_log = 1;

設置記錄時長

long_query_time變量表示只有運行時間超過此值就會被記錄,如下所示,更改時間為5秒,他默認為10秒,最小值為 0。

SET GLOBAL long_query_time = 5;

修改輸出位置

默認情況下,慢查詢日志文件位于 /var/lib/mysql/hostname-slow.log,我們還可以使用slow_query_log_file變量設置另一個位置。

SET GLOBAL slow_query_log_file = '/var/log/mysql/mysql-slow.log';

將慢查詢日志寫入表

慢查詢日志也可以被寫入slow_log表中,方式就是上述中所說修改log_output系統變量為TABLE,操作如下:

SET GLOBAL log_output='TABLE';

慢查詢日志相關的變量

  • slow_query_log - 啟用/禁用慢查詢日志

  • log_output - 如何寫入輸出

  • slow_query_log_file - 慢查詢日志文件的名稱

  • long_query_time - 定義慢查詢的時間(以秒/微秒為單位)

  • log_queries_not_using_indexes - 是否記錄不使用索引的查詢

  • log_slow_admin_statements - 是否記錄某些管理語句

  • log_slow_disabled_statements - 不應記錄在慢查詢日志中的語句類型

  • min_examined_row_limit - 查詢必須檢查的最小行數才能變慢

  • log_slow_rate_limit - 允許記錄一部分慢查詢

  • log_slow_verbosity - 日志中的詳細信息量

  • log_slow_filter - 限制要記錄的查詢

分析慢查詢

日志記錄后,我們還需要分析這些日志,找出影響系統的查詢,MySQL提供了一個名為mysqldumpslow的工具,可以簡單的顯示結果,只需要把日志路徑傳遞給他即可,如下:

# mysqldumpslow -a mysql-slow.log

Reading mysql slow query log from mysql-slow.log
Count: 1  Time=0.00s (0s)  Lock=0.00s (0s)  Rows_sent=21.0 (21), Rows_examined=21.0 (21), Rows_affected=0.0 (0), root[root]@localhost
  show databases

Count: 1  Time=0.00s (0s)  Lock=0.00s (0s)  Rows_sent=2.0 (2), Rows_examined=2.0 (2), Rows_affected=0.0 (0), root[root]@localhost
  select * from users

Count: 1  Time=0.00s (0s)  Lock=0.00s (0s)  Rows_sent=1.0 (1), Rows_examined=0.0 (0), Rows_affected=0.0 (0), root[root]@localhost
  select @@version_comment limit 1

Count: 1  Time=0.00s (0s)  Lock=0.00s (0s)  Rows_sent=1.0 (1), Rows_examined=0.0 (0), Rows_affected=0.0 (0), root[root]@localhost

他的參數如下

  • -s ,按照什么方式起來排序。默認at,也就是按照平均查詢時間來排序。都是按照倒序排列。

    al: average lock time 平均鎖定時間

    ar: average rows sent 平均返回行數

    at: average query time 平均查詢時間

    c: count 總執行次數

    l: lock time 總鎖定時間

    r: rows sent 總返回行數

    t: query time 總查詢時間

  • -t ,show the top n queries,顯示前多少名的記錄

  • -a ,默認不開啟這個選項。mysqldumpslow將相似的SQL的值(字符串或者數字)替換為N,開啟該選項,則顯示真實值。不開啟該選項,有點類似于Oracle的綁定變量的記錄。\

  • -g ,類似于grep命令,過濾出需要的信息。如,只查詢A表的慢查詢記錄。\

  • -l ,總時間中包含鎖定時間

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

通化市| 社旗县| 湛江市| 迭部县| 秦安县| 高要市| 北碚区| 观塘区| 五原县| 鱼台县| 封开县| 横峰县| 信丰县| 闻喜县| 峨边| 五指山市| 黄大仙区| 安塞县| 临桂县| 芒康县| 来凤县| 察哈| 兴海县| 阿鲁科尔沁旗| 沂源县| 闽清县| 湘潭县| 南川市| 唐河县| 方城县| 吉林省| 沽源县| 屯门区| 贺州市| 凌源市| 碌曲县| 新郑市| 伊春市| 拉萨市| 即墨市| 轮台县|