MySQL優化技術:定位慢查詢
一、什麼是慢查詢?
在執行資料庫增、刪、改、查操作時,耗時較大,超過MySQL資料庫指定的操作時間,將會將其定義為一種慢的查詢。MySQL預設時間為10秒,即一次超過10秒的資料庫操作,將被定義為慢查詢;這個時間是可以認為設定的。
二、MySQL常用的狀態操作
- 1、格式
show [session | global] status
預設引數是session,表示取出當前視窗的執行;如果你希望知道從資料庫啟動到現在的所有資訊,則需要傳遞global引數,如:
show global status like 'com_select'
- 2、show status like 'uptime'
檢視mysql啟動的時間
- 3、show status like 'com_select'
一共進行了多少次查詢
- 4、show status like 'com_insert'
一共進行了多少次insert操作
- 5、show status like 'com_delete'
一共進行了多少次delete操作
- 6、show status like 'com_update'
一共進行了多少次update操作
- 7、show status like 'connections'
檢視mysql的連線數
- 8、show status like 'slow_queries'
檢視有哪些慢查詢
- 9、show variables like 'long_query_time'
檢視當前慢查詢設定的時間
- 10、set long_query_time = 1
設定慢查詢時間為1秒,這個整數值是可以任意定義的
三、定位慢查詢實戰
需求:
將資料庫操作(增、刪、改、查)時間超過1秒鐘的都記錄到MySQL日誌中
實現
- 1、修改MySQL預設的慢查詢時間,設定為1秒鐘
set long_query_time = 1
- 2、構建一個400萬資料的大表
- 3、把慢查詢的SQL記錄到MySQL日誌中
檔案的預設目錄是MySQL資料庫安裝目錄下的data資料夾下
(1)先停止mysql服務
在cmd中輸入:net stop mysql
(3)定位到MySQL目錄
在cmd中輸入:cd mysql安裝路徑
(2)通過安全的方式啟動MySQL,並記錄日誌
在cmd中輸入:bin\mysqld.exe --safe-mode --slow-query-log
(3)執行耗時的SQL操作
查詢員工表中的資訊,select * from emp where empno=345679
(4)檢視日誌檔案
檢視mysql安裝路徑下的data資料夾下的日誌檔案