Navicat使用教程(三):使用MySQL日志(第3部分)——慢速日志
Navicat for MySQL 是一套管理和開(kāi)發(fā) MySQL 或 MariaDB 的理想解決方案。使用Navicat for MySQL可以同時(shí)連接到 MySQL 和 MariaDB。Navicat for MySQL提供了強(qiáng)大的前端功能,為數(shù)據(jù)庫(kù)管理、開(kāi)發(fā)和維護(hù)提供了直觀的圖形界面。對(duì)新手和專業(yè)人士來(lái)說(shuō),Navicat for MySQL都是管理和開(kāi)發(fā) MySQL 或 MariaDB的強(qiáng)大工具。
這篇文章將討論Navicat Monitor for MySQL / MariaDB中的監(jiān)控,將參考前兩篇。第一篇概述了MySQL上的不同日志類型,突出了其中最重要的一些,并涵蓋了列表中的前兩個(gè)。第二篇更詳細(xì)地介紹了二進(jìn)制日志。慢速日志將成為這篇文章的主題。
慢查詢?nèi)罩景瑘?zhí)行時(shí)間超過(guò)一定時(shí)間的SQL語(yǔ)句,并且需要查詢檢查給定數(shù)量的行。這是一個(gè)重要的問(wèn)題,因?yàn)樗鼧O大地簡(jiǎn)化了查找低效或耗時(shí)查詢的任務(wù),這些查詢會(huì)對(duì)數(shù)據(jù)庫(kù)和整體服務(wù)器性能產(chǎn)生負(fù)面影響。
慢查詢?nèi)罩緟?shù)
您可能想知道究竟是什么構(gòu)成了“slow”和/或“inefficient”的查詢。顯然,沒(méi)有通用的一刀切的答案,但是MySQL的制造商—Oracle—將其置于10秒,這恰好是long_query_time閾值變量的最大值。最小值為0會(huì)導(dǎo)致記錄所有查詢。如果需要非常具體,也可以將該值指定為微秒的分辨率。
默認(rèn)情況下,不會(huì)記錄管理語(yǔ)句以及不使用索引進(jìn)行查找的查詢。話雖如此,可以使用log_slow_admin_statements和log_queries_not_using_indexes變量更改此行為。
如果沒(méi)有為慢查詢?nèi)罩疚募付Q,則將其命名為host_name-slow.log。服務(wù)器在數(shù)據(jù)目錄中創(chuàng)建文件,除非給出絕對(duì)路徑名來(lái)指定不同的目錄。您可以使用slow_query_log_file指定日志文件的名稱。
慢查詢?nèi)罩靖袷?
以下是典型的慢查詢條目:
root@server# tail /var/log/slowqueries # Time: 130320 7:30:26 # User@Host: db_user[db_database] @ localhost [] # Query_time: 4.545309 Lock_time: 0.000069 Rows_sent: 219 Rows_examined: 254 SET timestamp=1363779026; SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes';
如果使用--log-short-format選項(xiàng),服務(wù)器將向慢查詢?nèi)罩緦?xiě)入較少的信息。相反,啟用log_slow_extra系統(tǒng)變量(從MySQL 8.0.14開(kāi)始提供)將導(dǎo)致服務(wù)器將幾個(gè)額外字段寫(xiě)入日志。
啟用慢速查詢記錄
慢查詢?nèi)罩疽呀茫虼四仨毻ㄟ^(guò)將--slow_query_log變量設(shè)置為1(在Navicat中為ON)將其打開(kāi)。同樣,不提供參數(shù)也會(huì)打開(kāi)慢速查詢?nèi)罩?。參?shù)0(Navicat中為OFF)禁用日志。
在Navicat中,您可以使用Server Monitor工具查找系統(tǒng)變量??梢酝ㄟ^(guò)Tools主菜單命令訪問(wèn)它。
在Server Monitor中,單擊中間的“Variables”選項(xiàng)卡并向下滾動(dòng)以查看列表中的slow_query_log和slow_query_log_file服務(wù)器變量:
Navicat Server Monitor工具中的slow_query_log服務(wù)器變量
購(gòu)買(mǎi)Navicat for MySQL正版授權(quán),請(qǐng)點(diǎn)擊“咨詢?cè)诰€客服”喲!