當前位置:首頁 » 編程語言 » mysql查看慢sql
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

mysql查看慢sql

發布時間: 2022-08-14 17:33:29

1. mysql慢sql日誌文件目錄

首先,這是根據個人喜好可以自主設置到伺服器的不同磁碟路徑下,並且可以修改;

其次,可以通過如下命令查看日誌文件目錄。

2. MySQL中如何查看「慢查詢」,如何分析執行SQL的效率

QAN(Query Analytics)

PMM 目前有 2 個版本,但是對於 QAN 來說其大致由三部分組成:

QAN-Agent(client):負責採集 slow-log 的數據並上報到服務端

QAN-API(server):負責存儲採集的數據,並對外提供查詢介面

QAN-APP:專門用來展示慢查詢數據的 grafana 第三方插件


1. 數據流轉

slow-log --> QAN-Agent --> QAN-API <--> QAN-APP(grafana)

2. pmm1 架構圖

3. 如何查看mysql慢查詢是否開啟

1,配置開啟

Linux:
在mysql配置文件my.cnf中增加
log-slow-queries=/var/lib/mysql/slowquery.log (指定日誌文件存放位置,可以為空,系統會給一個預設的文件host_name-slow.log)long_query_time=2 (記錄超過的時間,默認為10s)log-queries-not-using-indexes (log下來沒有使用索引的query,可以根據情況決定是否開啟)log-long-format (如果設置了,所有沒有使用索引的查詢也將被記錄)

Windows:
在my.ini的[mysqld]添加如下語句:log-slow-queries = E:\web\mysql\log\mysqlslowquery.loglong_query_time = 2(其他參數如上)

2,查看方式

Linux:
使用mysql自帶命令mysqlmpslow查看
常用命令
-s ORDER what to sort by (t, at, l, al, r, ar etc), 'at』 is default
-t NUM just show the top n queries
-g PATTERN grep: only consider stmts that include this string
s,是order的順序,說明寫的不夠詳細,包括看了代碼,主要有 c,t,l,r和ac,at,al,ar,分別是按照query次數,時間,lock的時間和返回的記錄數來排序,前面加了a的時倒序 -t,是top n的意思,即為返回前面多少條的數據 -g,後邊可以寫一個正則匹配模式,大小寫不敏感的
mysqlmpslow -s c -t 20 host-slow.log
mysqlmpslow -s r -t 20 host-slow.log
上述命令可以看出訪問次數最多的20個sql語句和返回記錄集最多的20個sql。
mysqlmpslow -t 10 -s t -g 「left join」 host-slow.log這個是按照時間返回前10條裡面含有左連接的sql語句。

4. mysql數據量上十萬條後,查詢慢導致伺服器卡有什麼解決辦法

問題

我們有一個 SQL,用於找到沒有主鍵 / 唯一鍵的表,但是在 MySQL 5.7 上運行特別慢,怎麼辦?

實驗

我們搭建一個 MySQL 5.7 的環境,此處省略搭建步驟。

寫個簡單的腳本,製造一批帶主鍵和不帶主鍵的表:

可以看到執行時間變成了 0.67s。

整理

我們診斷的關鍵點如下:

1. 對於 information_schema 中的元數據表,執行計劃不能提供有效信息。

2. 通過查看 MySQL 改寫後的 SQL,我們猜測了優化器發生了誤判。

3. 我們增加了 hint,指導 MySQL 正確進行優化判斷。

但目前我們的實驗僅限於猜測,猜中了萬事大吉,猜不中就無法做出好的診斷。

5. 如果mysql裡面的數據過多,查詢太慢怎麼辦

問題

我們有一個 SQL,用於找到沒有主鍵 / 唯一鍵的表,但是在 MySQL 5.7 上運行特別慢,怎麼辦?


實驗

我們搭建一個 MySQL 5.7 的環境,此處省略搭建步驟。

寫個簡單的腳本,製造一批帶主鍵和不帶主鍵的表:

可以看到執行時間變成了 0.67s。

整理

我們診斷的關鍵點如下:

1. 對於 information_schema 中的元數據表,執行計劃不能提供有效信息。

2. 通過查看 MySQL 改寫後的 SQL,我們猜測了優化器發生了誤判。

3. 我們增加了 hint,指導 MySQL 正確進行優化判斷。

但目前我們的實驗僅限於猜測,猜中了萬事大吉,猜不中就無法做出好的診斷。

6. Mysql 查詢速度慢怎麼辦

問題

我們有一個 SQL,用於找到沒有主鍵 / 唯一鍵的表,但是在 MySQL 5.7 上運行特別慢,怎麼辦?


實驗

我們搭建一個 MySQL 5.7 的環境,此處省略搭建步驟。

寫個簡單的腳本,製造一批帶主鍵和不帶主鍵的表:

可以看到執行時間變成了 0.67s。

整理

我們診斷的關鍵點如下:

1. 對於 information_schema 中的元數據表,執行計劃不能提供有效信息。

2. 通過查看 MySQL 改寫後的 SQL,我們猜測了優化器發生了誤判。

3. 我們增加了 hint,指導 MySQL 正確進行優化判斷。

但目前我們的實驗僅限於猜測,猜中了萬事大吉,猜不中就無法做出好的診斷。

7. MySQL怎麼查詢比較耗時的sql語句

開啟慢查詢日誌即可
文件方式配置
MySQL
慢查詢的方法:

mysql
配置文件
my.cnf
中增加:
log-slow-queries=/opt/data/slowquery.log
long_query_time=2
log-queries-not-using-indexes
命令方式配置
MySQL
慢查詢的方法:
set
global
slow_query_log=on;
set
global
long_query_time=1;
set
global
slow_query_log_file=『/opt/data/slow_query.log』;
查詢
MySQL
慢查詢狀態的方法:
SHOW
VARIABLES
LIKE
'%query%';
解析
MySQL
慢查詢日誌的方法:
按照
sql
執行時間最長的前
20

sql:
mysqlmpslow
-s
t
-t
20
-g
'select'
/opt/data/slowquery.log

8. 如何查找MySQL中查詢慢的SQL語句

問題

我們有一個 SQL,用於找到沒有主鍵 / 唯一鍵的表,但是在 MySQL 5.7 上運行特別慢,怎麼辦?

實驗

我們搭建一個 MySQL 5.7 的環境,此處省略搭建步驟。

寫個簡單的腳本,製造一批帶主鍵和不帶主鍵的表:

可以看到執行時間變成了 0.67s。

整理

我們診斷的關鍵點如下:

1. 對於 information_schema 中的元數據表,執行計劃不能提供有效信息。

2. 通過查看 MySQL 改寫後的 SQL,我們猜測了優化器發生了誤判。

3. 我們增加了 hint,指導 MySQL 正確進行優化判斷。

但目前我們的實驗僅限於猜測,猜中了萬事大吉,猜不中就無法做出好的診斷。

9. 如何查找MySQL中查詢慢的SQL語句

問題

我們有一個 SQL,用於找到沒有主鍵 / 唯一鍵的表,但是在 MySQL 5.7 上運行特別慢,怎麼辦?

實驗

我們搭建一個 MySQL 5.7 的環境,此處省略搭建步驟。

寫個簡單的腳本,製造一批帶主鍵和不帶主鍵的表:

可以看到執行時間變成了 0.67s。

整理

我們診斷的關鍵點如下:

1. 對於 information_schema 中的元數據表,執行計劃不能提供有效信息。

2. 通過查看 MySQL 改寫後的 SQL,我們猜測了優化器發生了誤判。

3. 我們增加了 hint,指導 MySQL 正確進行優化判斷。

但目前我們的實驗僅限於猜測,猜中了萬事大吉,猜不中就無法做出好的診斷。