mysql慢查詢使用詳解

字號(hào):


    1 慢查詢定義
    指mysql記錄所有執(zhí)行超過(guò)long_query_time參數(shù)設(shè)定的時(shí)間閾值的sql語(yǔ)句。慢查詢?nèi)罩揪褪怯涗涍@些sql的日志。
    2 開啟慢查詢?nèi)罩?BR>    找到mysql配置文件my.cnf.在mysqld的下面添加
    代碼如下:
    log-slow-queries = d:/mysql/log/mysqld-slow-query.log #日志存在的位置。(注意權(quán)限的問(wèn)題,可以不用設(shè)置,系統(tǒng)會(huì)給一個(gè)缺省的文件host_name-slow.log)
    long-query-time = 5 #sql執(zhí)行時(shí)間閾值,默認(rèn)為10秒。
    #log-long-format #說(shuō)log-long-format選項(xiàng)是用來(lái)設(shè)置日志的格式,它是以擴(kuò)展方式記錄有關(guān)事件。擴(kuò)展方式可記錄誰(shuí)發(fā)出查詢和什么時(shí)候發(fā)出查詢的信息??墒刮覀兏玫卣莆湛蛻舳说牟僮髑闆r。
    #log-slow-admin-statements #將慢管理語(yǔ)句例如optimize table、analyze table和alter table記入慢查詢?nèi)罩尽?BR>    log-queries-not-using-indexes #如果運(yùn)行的sql語(yǔ)句沒(méi)有使用索引,則mysql數(shù)據(jù)庫(kù)同樣會(huì)將這條sql語(yǔ)句記錄到慢查詢?nèi)罩疚募小?BR>    配置完畢后重啟mysql服務(wù)。
    3 測(cè)試  
    為了方便 我只在my.cnf中配置了慢查詢?nèi)罩镜穆窂?
    mysql 版本為 5.1.73
    關(guān)于 long_query_time :從mysql 5.1開始,long_query_time開始以微秒記錄sql語(yǔ)句運(yùn)行時(shí)間,之前僅用秒為單位記錄。這樣可以更精確地記錄sql的運(yùn)行時(shí)間,供dba分析。
    進(jìn)入mysql.
    代碼如下:
    mysql> show variables like %slow%; #查看慢查詢?nèi)罩鞠嚓P(guān)的信息
    mysql> set global long_query_time=0.01; #將mysql位置的值改為 0.01
    mysql> show variables like long_query_time; #查看是否生效
    mysql> select sleep(2); #延遲2秒執(zhí)行 注:這條sql執(zhí)行完畢以后應(yīng)該已經(jīng)在慢查詢的日志文件中產(chǎn)生相關(guān)的信息記錄
    mysql> show global status like '%slow%'; #查看慢查詢語(yǔ)句的次數(shù)
    在日志文件中可以看到已經(jīng)記錄了sql.
    總結(jié):
    windows下開啟mysql慢查詢
    mysql在windows系統(tǒng)中的配置文件一般是是my.ini找到[mysqld]下面加上
    log-slow-queries = f:\mysql\log\mysqlslowquery.log
    long_query_time = 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.log為慢查詢?nèi)罩敬娣诺奈恢?,一般這個(gè)目錄要有mysql的運(yùn)行帳號(hào)的可寫權(quán)限,一般都將這個(gè)目錄設(shè)置為mysql的數(shù)據(jù)存放目錄;
    long_query_time=2中的2表示查詢超過(guò)兩秒才記錄;