日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

分析mysql日志文件_MySQL日志文件与分析

發布時間:2025/4/16 数据库 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 分析mysql日志文件_MySQL日志文件与分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.查詢日志、慢查詢日志、二進制日志對比

查詢日志

general_log

會記錄用戶的所有操作,其中包含增刪查改等

可以指定輸出為表

慢查詢日志

slow_log

只要超過定義時間的所有操作語句都記錄

可以指定輸出為表

二進制日志

log_bin

記錄可能執行更改的所有操作

mysqlbinlog查看

2.日志的分析

2.1日志的存儲

數據操作過程中,Mysqld是將接收到的語句按照接收的順序(注意不是執行順序)寫到查詢日志文件中。一條一條就類似這樣:

# Time: 070927 8:08:52

#User@Host: root[root] @ [192.168.0.20]

# Query_time: 372 Lock_time: 136 Rows_sent: 152 Rows_examined: 263630select id, name from manager where id in (66,10135);

這樣的話,當我們去查看日志內容時就會灰常費時費神費眼睛。那么應該怎么破?

自5.1.6版本起,就有一波新功能出爐,比如查詢日志可以寫到數據庫系統中的專用表。

MySQL的命令行在啟動時可以加載很多參數,其中就提供了一個日志專用的參數--log-output,用來指定日志文件的輸出方式.

--log-output參數可選值有三個:

TABLE:記錄到數據庫中的日志表;

FILE:記錄到日志文件,默認值即為FILE?(在5.1.6到5.1.20版本時,默認值為TABLE);

NONE:不記錄。

(1)可以是TABLE、FILE、NONE,也可以是TABLE及FILE的組合(用逗號隔開),默認為TABLE。

(2)如果組合中出現了NONE,那么其它設定都將失效,同時,無論是否啟用日志功能,也不會記錄任何相關的日志信息。

(3)作用范圍為全局級別,可用于配置文件,屬動態變量。

(4)啟用mysqld進程時附加--log-output指定日志輸出類型。

MySQL支持將慢查詢日志保存到mysql.slow_log這張表中:

2.2慢查詢分析工具

如果慢查詢日志輸出類型已經指定了FILE,在日志量大的情況下,我們可以借助一些分析工具。

(1)mysqldumpslow

mysql 自帶慢查詢日志分析工具 mysqldumpslow,使用很簡單,可以跟-help來查看具體的用法。

主要功能:統計不同慢sql的出現次數(Count)?執行最長時間(Time), 累計總耗費時間(Time), 等待鎖的時間(Lock), 發送給客戶端的行總數(Rows), 掃描的行總數(Rows), 用戶以及sql語句本身(抽象了一下格式, 比如 limit 1, 20 用 limit N,N 表示).

(2)mysqlsla

功能非常強大. 數據報表,非常有利于分析慢查詢的原因, 包括執行頻率, 數據量, 查詢消耗等.

格式說明如下:

總查詢次數 (queries total), 去重后的sql數量 (unique)輸出報表的內容排序(sorted by)最重大的慢sql統計信息, 包括平均執行時間, 等待鎖時間, 結果行的總數, 掃描的行總數。

Count:??????????????????? sql的執行次數及占總的slow log數量的百分比。

Time:???????????????????? 執行時間, 包括總時間, 平均時間, 最小, 最大時間, 時間占到總慢sql時間的百分比。

95% of Time:?????? 去除最快和最慢的sql, 覆蓋率占95%的sql的執行時間。

Lock Time:?????????? 等待鎖的時間。

95% of Lock:??????? 95%的慢sql等待鎖時間。

Rows sent:???? ?????? 結果行統計數量, 包括平均, 最小, 最大數量。

Rows examined:? 掃描的行數量。

Database:??????????? 屬于哪個數據庫。

Users:?????????????????? 哪個用戶IP占到所有用戶執行的sql百分比。

Query abstract:??? 抽象后的sql語句。

Query sample:???? sql語句。

除了以上的輸出, 官方還提供了很多定制化參數, 是一款不可多得的好工具。

(3)pt-upgrade

這個工具用來檢查在新版本中運行的SQL是否與老版本一樣,返回相同的結果,最好的應用場景就是數據遷移的時候。

pt-upgrade h=host1 h=host2 slow.log

(4)pt-query-digest

可以從普通MySQL日志,慢查詢日志以及二進制日志中分析查詢,甚至可以從SHOW PROCESSLIST和MySQL協議的tcpdump中進行分析,如果沒有指定文件,它從標準輸入流(STDIN)中讀取數據。

最簡單的用法如下:

pt-query-digest slow.logs

整個輸出分為三大部分:

1、整體概要(Overall)

這個部分是一個大致的概要信息(類似loadrunner給出的概要信息),通過它可以對當前MySQL的查詢性能做一個初步的評估,比如各個指標的最大 值(max),平均值(min),95%分布值,中位數(median),標準偏差(stddev)。這些指標有查詢的執行時間(Exec time),鎖占用的時間(Lock time),MySQL執行器需要檢查的行數(Rows examine),最后返回給客戶端的行數(Rows sent),查詢的大小。

2、查詢的匯總信息(Profile)

這個部分對所有”重要”的查詢(通常是比較慢的查詢)做了個一覽表:

每個查詢都有一個Query ID,這個ID通過Hash計算出來的。pt-query-digest是根據這個所謂的Fingerprint來group by的。舉例下面兩個查詢的Fingerprint是一樣的都是select * from table1 where column1 = ?,工具箱中也有一個與之相關的工具pt-fingerprint。

select * from table1 where column1 = 2

select * from table1 where column1 = 3

Rank整個分析中該“語句”的排名,一般也就是性能最常的。

Response time? “語句”的響應時間以及整體占比情況。

Calls 該“語句”的執行次數。

R/Call 每次執行的平均響應時間。

V/M 響應時間的差異平均對比率。

在尾部有一行輸出,顯示了其他2個占比較低而不值得單獨顯示的查詢的統計數據。

3、詳細信息

這個部分會列出Profile表中每個查詢的詳細信息:

包括Overall中有的信息、查詢響應時間的分布情況以及該查詢”入榜”的理由。

2.3BOX Anemometer

BOX Anemometer是基于pt-query-digest將MySQL慢查詢可視化

總結

以上是生活随笔為你收集整理的分析mysql日志文件_MySQL日志文件与分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。