Mysql 慢查詢日志

慢查詢日志

MySQL的慢查詢日志是MySQL提供的一種日志記錄胰苏,它用來記錄在MySQL中響應時間超過閥值的語句中符,具體指運行時間超過long_query_time值的SQL配阵,則會被記錄到慢查詢日志中。

long_query_time的默認值為10钦勘,意思是運行10S以上的語句陋葡。該值可以指定為微秒的分辨率。對于記錄到文件彻采,寫入包括微秒部分的時間腐缤。對于記錄到表,只寫入整數(shù)倍; 微秒部分被忽略肛响。

默認情況下岭粤,不記錄管理語句,也不記錄不使用索引進行查找的查詢

默認情況下特笋,Mysql數(shù)據(jù)庫并不啟動慢查詢日志剃浇,需要我們手動來設置這個參數(shù),當然猎物,如果不是調優(yōu)需要的話虎囚,一般不建議啟動該參數(shù),因為開啟慢查詢日志會或多或少帶來一定的性能影響蔫磨。

慢查詢日志支持將日志記錄寫入文件淘讥,也支持將日志記錄寫入數(shù)據(jù)庫表。

寫入慢查詢日志的語句中的密碼將由服務器重寫质帅,而不是以純文本形式發(fā)生适揉。

常用語 SQL 語句的優(yōu)化留攒,運維人員的工作:

  1. 配置數(shù)據(jù)庫開啟 慢日志功能

  2. 配置慢日志的相關參數(shù),比如存放慢日志的具體位置嫉嘀,還有設置規(guī)定的時間

  3. 檢查慢日志文件炼邀,假如有,把語句和相關信息給到開發(fā)人員或DBA 人員剪侮。

配置參數(shù)詳解

是否開啟慢日志

屬性
命令行格式 --slow-query-log
系統(tǒng)變量 slow_query_log
范圍 全局
動態(tài)
類型 布爾
默認值 OFF

設置slow_query_log為0(或OFF)以禁用日志或設置為1(或 ON)以啟用它

定義時間閥值

long_query_time

屬性
命令行格式 --long-query-time=#
系統(tǒng)變量 long_query_time
范圍 全球
動態(tài)
類型 數(shù)字
默認值 10
最低價值 0

如果查詢花費的時間超過此秒數(shù)拭宁,則服務器會遞增Slow_queries 狀態(tài)變量。如果啟用了慢查詢日志瓣俯,則查詢將記錄到慢查詢日志文件中杰标。此值是實時測量的,而不是CPU時間彩匕,因此在負載較輕的系統(tǒng)上低于閾值的查詢可能會高于嚴重負載的閾值腔剂。

設置慢日志文件名稱

屬性
命令行格式 --slow-query-log-file=file_name
系統(tǒng)變量 slow_query_log_file
范圍 全球
動態(tài)
類型 文件名
默認值 host_name-slow.log

如果沒有為慢查詢日志文件指定任何名稱,則默認名稱為 host_name-slow.log驼仪。除非給出絕對路徑名以指定其他目錄掸犬,否則服務器將在數(shù)據(jù)目錄中創(chuàng)建該文件。

系統(tǒng)變量 log-queries-not-using-indexes:未使用索引的查詢也被記錄到慢查詢日志中(可選項)绪爸。如果調優(yōu)的話湾碎,建議開啟這個選項。另外奠货,開啟了這個參數(shù)介褥,其實使用full index scan的sql也會被記錄到慢查詢日志。

系統(tǒng)變量 log_slow_admin_statements 表示是否將慢管理語句例如 ANALYZE TABLEALTER TABLE 等記入慢查詢日志

Mysql 中查看慢查詢的信息

mysql> show variables like 'slow_query%';
+---------------------+---------------------------------------+
| Variable_name       | Value                                 |
+---------------------+---------------------------------------+
| slow_query_log      | OFF                                   |
| slow_query_log_file | /var/lib/mysql/mysql-master1-slow.log |
+---------------------+---------------------------------------+
2 rows in set (0.00 sec)

mysql> show variables like 'long_query_time%';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.00 sec

Mysql 中配置慢日志

適用于不允許重啟服務器的情況

mysql> set global long_query_time=0;
Query OK, 0 rows affected (0.00 sec)

mysql> show variables like 'long_query_time%';
+-----------------+-----------+
| Variable_name   | Value     |
+-----------------+-----------+
| long_query_time | 10.000000 |
+-----------------+-----------+
1 row in set (0.01 sec)

mysql> show global variables like 'long_query_time%';
+-----------------+----------+
| Variable_name   | Value    |
+-----------------+----------+
| long_query_time | 0.000000 |
+-----------------+----------+
1 row in set (0.00 sec)

另外递惋,如果你想查詢有多少條慢查詢記錄柔滔,可以使用系統(tǒng)變量。

mysql> show global status like '%Slow_queries%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Slow_queries  | 0     |
+---------------+-------+
1 row in set (0.01 sec)

開始配置

// my.cnf 
[mysqld]
slow_query_log=1
long_query_time=0.5
log_queries_not_using_indexes=ON
slow_query_log_file="/var/log/mysql/mysql_slow.log"

創(chuàng)建對應的目錄并授權

shell> mkdir /var/log/mysql
shell> chown mysql.mysql /var/log/mysql

處理慢日志的大小

刷新日志時丹墨,服務器會創(chuàng)建新的二進制日志文件廊遍。但是嬉愧,它只是關閉并重新打開常規(guī)和慢速查詢日志文件贩挣。

要在Unix上創(chuàng)建新文件,請在刷新之前重命名當前日志文件没酣。

shell> cd mysql-data-directory
shell> mv mysql.log mysql.old
shell> mv mysql-slow.log mysql-slow.old
shell> mysqladmin flush-logs

您可以通過禁用日志在運行時重命名常規(guī)查詢日志或慢查詢日志:

mysql> SET GLOBAL general_log = 'OFF';
mysql> SET GLOBAL slow_query_log = 'OFF';

禁用日志后王财,在外部重命名日志文件; 例如,從命令行裕便。然后再次啟用日志:

mysql> SET GLOBAL general_log = 'ON';
mysql> SET GLOBAL slow_query_log = 'ON';

此方法適用于任何平臺绒净,不需要重新啟動服務器

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市偿衰,隨后出現(xiàn)的幾起案子挂疆,更是在濱河造成了極大的恐慌改览,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,430評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缤言,死亡現(xiàn)場離奇詭異宝当,居然都是意外死亡,警方通過查閱死者的電腦和手機胆萧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評論 3 398
  • 文/潘曉璐 我一進店門庆揩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人跌穗,你說我怎么就攤上這事订晌。” “怎么了蚌吸?”我有些...
    開封第一講書人閱讀 167,834評論 0 360
  • 文/不壞的土叔 我叫張陵锈拨,是天一觀的道長。 經(jīng)常有香客問我羹唠,道長推励,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,543評論 1 296
  • 正文 為了忘掉前任肉迫,我火速辦了婚禮验辞,結果婚禮上,老公的妹妹穿的比我還像新娘喊衫。我一直安慰自己跌造,他們只是感情好,可當我...
    茶點故事閱讀 68,547評論 6 397
  • 文/花漫 我一把揭開白布族购。 她就那樣靜靜地躺著壳贪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪寝杖。 梳的紋絲不亂的頭發(fā)上违施,一...
    開封第一講書人閱讀 52,196評論 1 308
  • 那天,我揣著相機與錄音瑟幕,去河邊找鬼磕蒲。 笑死,一個胖子當著我的面吹牛只盹,可吹牛的內容都是我干的辣往。 我是一名探鬼主播,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼殖卑,長吁一口氣:“原來是場噩夢啊……” “哼站削!你這毒婦竟也來了?” 一聲冷哼從身側響起孵稽,我...
    開封第一講書人閱讀 39,671評論 0 276
  • 序言:老撾萬榮一對情侶失蹤许起,失蹤者是張志新(化名)和其女友劉穎十偶,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體园细,經(jīng)...
    沈念sama閱讀 46,221評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡扯键,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,303評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了珊肃。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片荣刑。...
    茶點故事閱讀 40,444評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖伦乔,靈堂內的尸體忽然破棺而出厉亏,到底是詐尸還是另有隱情,我是刑警寧澤烈和,帶...
    沈念sama閱讀 36,134評論 5 350
  • 正文 年R本政府宣布爱只,位于F島的核電站,受9級特大地震影響招刹,放射性物質發(fā)生泄漏恬试。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,810評論 3 333
  • 文/蒙蒙 一疯暑、第九天 我趴在偏房一處隱蔽的房頂上張望训柴。 院中可真熱鬧,春花似錦妇拯、人聲如沸幻馁。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽仗嗦。三九已至,卻和暖如春甘凭,著一層夾襖步出監(jiān)牢的瞬間稀拐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評論 1 272
  • 我被黑心中介騙來泰國打工丹弱, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留德撬,地道東北人。 一個月前我還...
    沈念sama閱讀 48,837評論 3 376
  • 正文 我出身青樓蹈矮,卻偏偏與公主長得像砰逻,于是被迫代替她去往敵國和親鸣驱。 傳聞我的和親對象是個殘疾皇子泛鸟,可洞房花燭夜當晚...
    茶點故事閱讀 45,455評論 2 359

推薦閱讀更多精彩內容