一、MySQL數據庫有幾個配置選項可以幫助我們及時捕獲低效SQL語句 1,slow_query_log 這個參數設置為ON,可以捕獲執行時間超過一定數值的SQL語句。 2,long_query_time 當SQL語句執行時間超過此數值時,就會被記錄到日志中,建議設置為1或者更短。 3,slow_query_log_file 記錄日志的文件名。 4,log_queries_not_using_indexes 這個參數設置為ON,可以捕獲到所有未使用索引的SQL語句,盡管這個SQL語句有可能執行得挺快。 二、檢測mysql中sql語句的效率的方法 1、通過查詢日志 (1)、Windows下開啟MySQL慢查詢 MySQL在Windows系統中的配置文件一般是是my.ini找到[mysqld]下面加上 代碼如下 log-slow-queries = F:/MySQL/log/mysqlslowquery。log long_query_time = 2 (2)、Linux下啟用MySQL慢查詢 MySQL在Windows系統中的配置文件一般是是my.cnf找到[mysqld]下面加上 代碼如下 log-slow-queries=/data/mysqldata/slowquery。log long_query_time=2 說明 log-slow-queries = F:/MySQL/log/mysqlslowquery。 為慢查詢日志存放的位置,一般這個目錄要有MySQL的運行帳號的可寫權限,一般都將這個目錄設置為MySQL的數據存放目錄; long_query_time=2中的2表示查詢超過兩秒才記錄;

目前創新互聯建站已為上千的企業提供了網站建設、域名、雅安服務器托管、網站改版維護、企業網站設計、凱里網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協力一起成長,共同發展。
開啟慢查詢日志
mysql set global slow_query_log=1;
定義時間SQL查詢的超時時間
mysql set global long_query_time = 0.005;
查看慢查詢日志的保存路徑
mysql show global variables like 'slow_query_log_file';
查看慢查詢
cat /var/log/mysql/slow.log
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自帶命令mysqldumpslow查看
常用命令
-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,后邊可以寫一個正則匹配模式,大小寫不敏感的
mysqldumpslow -s c -t 20 host-slow.log
mysqldumpslow -s r -t 20 host-slow.log
上述命令可以看出訪問次數最多的20個sql語句和返回記錄集最多的20個sql。
mysqldumpslow -t 10 -s t -g “left join” host-slow.log這個是按照時間返回前10條里面含有左連接的sql語句。
在my.ini中加上下面兩句話
log-slow-queries = D:\wamp\mysql_slow_query.log
long_query_time=5
第一句使用來定義慢查詢日志的路徑(因為是windows,所以不牽涉權限問題)
第二句使用來定義查過多少秒的查詢算是慢查詢,我這里定義的是5秒
第二步:查看關于慢查詢的狀態
執行如下SQL語句來查看mysql慢查詢的狀態
show variables like '%slow%';
執行結果會把是否開啟慢查詢、慢查詢的秒數、慢查詢日志等信息打印在屏幕上。
第三步:執行一次慢查詢操作
其實想要執行一次有實際意義的慢查詢比較困難,因為在自己測試的時候,就算查詢有20萬條數據的海量表,也只需要0.幾秒。我們可以通過如下語句代替:
SELECT SLEEP(10);
第四步:查看慢查詢的數量
通過如下sql語句,來查看一共執行過幾次慢查詢:
show global status like '%slow%';
long_query_time 參數的查看
默認是10秒,10秒以上的sql會記錄。可進行值的修改,
long_query_time 默認不開啟 ,如果不是需要進行開始調優,一般不建議開啟此參數。
永久開啟:
在my.cnf中的
1.查看慢查詢的時長
看此圖默認10秒,是大于10秒,不等于10秒。
2.修改此時長
臨時修改,重啟mysql后失效,修改后需要新開連接才能查詢到
永久在配制文件中修改
查看慢sql個數
將所有沒有使用帶索引的查詢語句全部寫到慢查詢日志中
設置沒帶索引的慢sql進行記錄
最后匯總my.cnf配制
文章題目:mysql慢查詢怎么看,mysql數據查詢慢
當前地址:http://www.yijiale78.com/article34/hsidse.html
成都網站建設公司_創新互聯,為您提供網站改版、定制網站、Google、外貿網站建設、ChatGPT、網站營銷
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯