Mysql基礎教程 mysql進階

Mysql慢查詢的配置進階



慢查詢的配置


我們第二次查詢一下,剛才的內容,發現是0秒。


93.png


我們重新查詢一個內容,是0.05秒。


94.png


再查詢一次,0.01秒。


95.png


再查詢一次,還是0.01秒。


96.png


這是什么原因呢,在mysql當中如果你這次查詢和上一次查詢的sql語句是完全一樣的,包括代碼的大小寫一樣的情況下,它會認為是上一條語句的重復,因為這個查詢它的數據是有一定的緩存的,那么你下次查詢的時候它就把緩存的數據發給你,發給你的時候你就會縮短你的時間,這就是我們為什么相同的sql語句,第二次會比第一次查詢的時間短很多,就是這樣的原因。


我們再來看看慢查詢的記錄,這里面記錄了剛才慢查詢超過1秒的記錄。


97.png


我們再來查詢一個,這個是0.232秒。


98.png



闡述


有關慢查詢日志功能的相關參數說明:log-slow-queries指定日志文件存放位置,該目錄文件一定要有寫的權限。可以不用設置,系統會給一個缺省的文件host_name-slow.log,long_query_timeSQL執行時間閾值,默認為10秒。


注意以下三點


1)設置long_query_time這個閾值后,mysql數據庫會記錄運行時間超過該值的所有SQL語句,但對于運行時間正好等于long_query_time的情況,并不會被記錄下來。也就是說,在mysql源碼里是判斷大于long_query_time,而非大于等于。


2)從mysql 5.1開始,long_query_time開始以微秒記錄SQL語句運行時間,之前僅用秒為單位記錄。這樣可以更精確地記錄SQL的運行時間,供DBA分析。


3)建議該時間不應太小或太大,最好在5-10秒之間。當然可以根據自己情況決定。


log-queries-not-using-indexes,如果運行的SQL語句沒有使用索引,則mysql數據庫同樣會將這條SQL語句記錄到慢查詢日志文件中。log-queries-not-using-indexes  //即使我們查詢的表沒有超過慢查詢的設置時間,但是因為這張表里面沒有用索引,沒有用索引的話,慢查詢也是會記錄的。


比如:設計這張表的時候,把它的主見刪掉,它實際上是沒有主鍵的索引。


99.png


我們再來查詢一下。


990.png


雖然是用了0.27秒,我們看看它會不會在mysql當中,我么可以看到我們沒有超過慢查詢的時間,但是因為我們這個查詢是沒有使用索引的查詢,它也會記錄到我們的慢查詢的日志記錄當中。


991.png



【本文由麥子學院獨家原創,轉載請注明出處并保留原文鏈接】

logo
? 2012-2016 www.jvbprd.live
蜀ICP備13014270號-4 Version 5.0.0 release20160127

免費領取價值1888元求職寶典!

客服熱線 400-862-8862

回到頂部

彩票安徽25选5