一、MySQL數(shù)據(jù)庫有幾個(gè)配置選項(xiàng)可以幫助我們及時(shí)捕獲低效SQL語句 1,slow_query_log 這個(gè)參數(shù)設(shè)置為ON,可以捕獲執(zhí)行時(shí)間超過一定數(shù)值的SQL語句。 2,long_query_time 當(dāng)SQL語句執(zhí)行時(shí)間超過此數(shù)值時(shí),就會(huì)被記錄到日志中,建議設(shè)置為1或者更短。 3,slow_query_log_file 記錄日志的文件名。 4,log_queries_not_using_indexes 這個(gè)參數(shù)設(shè)置為ON,可以捕獲到所有未使用索引的SQL語句,盡管這個(gè)SQL語句有可能執(zhí)行得挺快。 二、檢測mysql中sql語句的效率的方法 1、通過查詢?nèi)罩?(1)、Windows下開啟MySQL慢查詢 MySQL在Windows系統(tǒng)中的配置文件一般是是my.ini找到[mysqld]下面加上 代碼如下 log-slow-queries = F:/MySQL/log/mysqlslowquery。log long_query_time = 2 (2)、Linux下啟用MySQL慢查詢 MySQL在Windows系統(tǒng)中的配置文件一般是是my.cnf找到[mysqld]下面加上 代碼如下 log-slow-queries=/data/mysqldata/slowquery。log long_query_time=2 說明 log-slow-queries = F:/MySQL/log/mysqlslowquery。 為慢查詢?nèi)罩敬娣诺奈恢?,一般這個(gè)目錄要有MySQL的運(yùn)行帳號(hào)的可寫權(quán)限,一般都將這個(gè)目錄設(shè)置為MySQL的數(shù)據(jù)存放目錄; long_query_time=2中的2表示查詢超過兩秒才記錄;
目前創(chuàng)新互聯(lián)建站已為上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、網(wǎng)站改版維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、凱里網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
開啟慢查詢?nèi)罩?/p>
mysql set global slow_query_log=1;
定義時(shí)間SQL查詢的超時(shí)時(shí)間
mysql set global long_query_time = 0.005;
查看慢查詢?nèi)罩镜谋4媛窂?/p>
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 (指定日志文件存放位置,可以為空,系統(tǒng)會(huì)給一個(gè)缺省的文件host_name-slow.log)long_query_time=2 (記錄超過的時(shí)間,默認(rèn)為10s)log-queries-not-using-indexes (log下來沒有使用索引的query,可以根據(jù)情況決定是否開啟)log-long-format (如果設(shè)置了,所有沒有使用索引的查詢也將被記錄)
Windows:
在my.ini的[mysqld]添加如下語句:log-slow-queries = E:\web\mysql\log\mysqlslowquery.loglong_query_time = 2(其他參數(shù)如上)
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的順序,說明寫的不夠詳細(xì),包括看了代碼,主要有 c,t,l,r和ac,at,al,ar,分別是按照query次數(shù),時(shí)間,lock的時(shí)間和返回的記錄數(shù)來排序,前面加了a的時(shí)倒序 -t,是top n的意思,即為返回前面多少條的數(shù)據(jù) -g,后邊可以寫一個(gè)正則匹配模式,大小寫不敏感的
mysqldumpslow -s c -t 20 host-slow.log
mysqldumpslow -s r -t 20 host-slow.log
上述命令可以看出訪問次數(shù)最多的20個(gè)sql語句和返回記錄集最多的20個(gè)sql。
mysqldumpslow -t 10 -s t -g “l(fā)eft join” host-slow.log這個(gè)是按照時(shí)間返回前10條里面含有左連接的sql語句。
在my.ini中加上下面兩句話
log-slow-queries = D:\wamp\mysql_slow_query.log
long_query_time=5
第一句使用來定義慢查詢?nèi)罩镜穆窂剑ㄒ驗(yàn)槭莣indows,所以不牽涉權(quán)限問題)
第二句使用來定義查過多少秒的查詢算是慢查詢,我這里定義的是5秒
第二步:查看關(guān)于慢查詢的狀態(tài)
執(zhí)行如下SQL語句來查看mysql慢查詢的狀態(tài)
show variables like '%slow%';
執(zhí)行結(jié)果會(huì)把是否開啟慢查詢、慢查詢的秒數(shù)、慢查詢?nèi)罩镜刃畔⒋蛴≡谄聊簧稀?/p>
第三步:執(zhí)行一次慢查詢操作
其實(shí)想要執(zhí)行一次有實(shí)際意義的慢查詢比較困難,因?yàn)樵谧约簻y試的時(shí)候,就算查詢有20萬條數(shù)據(jù)的海量表,也只需要0.幾秒。我們可以通過如下語句代替:
SELECT SLEEP(10);
第四步:查看慢查詢的數(shù)量
通過如下sql語句,來查看一共執(zhí)行過幾次慢查詢:
show global status like '%slow%';
long_query_time 參數(shù)的查看
默認(rèn)是10秒,10秒以上的sql會(huì)記錄。可進(jìn)行值的修改,
long_query_time 默認(rèn)不開啟 ,如果不是需要進(jìn)行開始調(diào)優(yōu),一般不建議開啟此參數(shù)。
永久開啟:
在my.cnf中的
1.查看慢查詢的時(shí)長
看此圖默認(rèn)10秒,是大于10秒,不等于10秒。
2.修改此時(shí)長
臨時(shí)修改,重啟mysql后失效,修改后需要新開連接才能查詢到
永久在配制文件中修改
查看慢sql個(gè)數(shù)
將所有沒有使用帶索引的查詢語句全部寫到慢查詢?nèi)罩局?/p>
設(shè)置沒帶索引的慢sql進(jìn)行記錄
最后匯總my.cnf配制
文章題目:mysql慢查詢怎么看,mysql數(shù)據(jù)查詢慢
當(dāng)前地址:http://jinyejixie.com/article34/hsidse.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、定制網(wǎng)站、Google、外貿(mào)網(wǎng)站建設(shè)、ChatGPT、網(wǎng)站營銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)