我們先來看下面試題:
面試題:如何判斷SQL查詢運算不是慢sql、如何最佳化(阿里面試題)
#面試題:MySQL慢查詢開啟,語句分析(阿里面試題)
(學習影片分享:java教學影片)
一、開啟mysql慢查詢
方式一:修改設定檔
在my.ini 增加幾行:
[mysqlld] //定义查过多少秒的查询算是慢查询,我这里定义的是2秒 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" //记录下没有使用索引的query log-query-not-using-indexes
(相關學習影片分享:java面試題目及答案)
方式二:透過MySQL資料庫開啟慢查詢
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.幾秒。我們可以透過如下語句取代:
SELECT SLEEP(10);
三、查看慢查詢的數量
透過如下sql語句,來查看一共執行過幾次慢查詢:
show global status like '%slow%';
四、分析慢查詢日誌
方式一:透過工具分析
MySQL自帶了mysqldumpslow工具用來分析slow query日誌,除此之外,還有一些好用的開源工具。
這裡假設已儲存的日誌名稱為long.log
列出記錄次數最多的10個sql語句:
mysqldumpslow -s c -t 10 long.log
列出回傳記錄集最多的10個sql語句:
mysqldumpslow -s r -t 10 long.log
方式二:直接分析mysql慢查詢日誌
# 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中文網其他相關文章!