1. 程式人生 > >MySQL優化技術:定位慢查詢

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資料夾下的日誌檔案