
我們先來看下面試題:
面試題:如何判斷SQL查詢運算不是慢sql、如何最佳化(阿里面試題)
#面試題:MySQL慢查詢開啟,語句分析(阿里面試題)
(學習影片分享:java教學影片)
一、開啟mysql慢查詢
方式一:修改設定檔
在my.ini 增加幾行:
1 2 3 4 5 6 7 8 9 10 11 12 | [mysqlld]
long_query_time=2
#5.0、5.1等版本配置如下选项
log-slow-queries= "mysql_slow_query.log"
#5.5及以上版本配置如下选项
slow-query-log=On
slow_query_log_file= "mysql_slow_query.log"
log-query-not-using-indexes
|
登入後複製
(相關學習影片分享:java面試題目及答案)
方式二:透過MySQL資料庫開啟慢查詢
1 2 3 | mysql>set global slow_query_log=ON
mysql>set global long_query_time = 3600;
mysql>set global log_querise_not_using_indexes = ON;
|
登入後複製
二、執行一次慢查詢操作
其實想要執行一次有實際意義的慢查詢比較困難,因為在自己測試的時候,就算查詢有20萬個資料的海量表,也只需要0.幾秒。我們可以透過如下語句取代:
三、查看慢查詢的數量
透過如下sql語句,來查看一共執行過幾次慢查詢:
1 | show global status like '%slow%';
|
登入後複製
四、分析慢查詢日誌
方式一:透過工具分析
MySQL自帶了mysqldumpslow工具用來分析slow query日誌,除此之外,還有一些好用的開源工具。
這裡假設已儲存的日誌名稱為long.log
列出記錄次數最多的10個sql語句:
1 | mysqldumpslow -s c -t 10 long.log
|
登入後複製
列出回傳記錄集最多的10個sql語句:
1 | mysqldumpslow -s r -t 10 long.log
|
登入後複製
方式二:直接分析mysql慢查詢日誌
1 2 3 4 5 6 7 8 9 10 | # Time: 121017 17:38:54
# User@Host: root[root] @ localhost [127.0.0.1]
# Query_time: 3.794217 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 4194304
SET timestamp=1350466734;
select * from wei where text='orange';
# Time: 121017 17:46:22
# User@Host: root[root] @ localhost [127.0.0.1]
# Query_time: 3.819219 Lock_time: 0.000000 Rows_sent: 0 Rows_examined: 4194304
SET timestamp=1350467182;
select * from wei where text='long';
|
登入後複製
相關推薦:java入門教學
以上是java面試——慢查詢的詳細內容。更多資訊請關注PHP中文網其他相關文章!