在日常開發(fā)當中,經(jīng)常會遇到頁面打開速度極慢的情況,通過排除,確定了,是數(shù)據(jù)庫的影響,為了迅速查找具體的SQL,可以通過Mysql的日志記錄方法。--打開sql執(zhí)行記錄功能setgloballog_output='TABLE';--輸出到表setgloballog=ON;--打開所有命令執(zhí)行記錄功能general_log,所有語句:成功和未成功的.setgloballog_slow_queries=ON;--打開慢查詢sql記錄slow_log,執(zhí)行成功的:慢查詢語句和未使用索引的語句setgloballong_query_time=0.1;--慢查詢時間限制(秒)setgloballog_queries_not_using_indexes=ON;--記錄未使用索引的sql語句--查詢sql執(zhí)行記錄select*frommysql.slow_logorderby1;--執(zhí)行成功的:慢查詢語句,和未使用索引的語句select*frommysql.general_logorderby1;--所有語句:成功和未成功的.--關閉sql執(zhí)行記錄setgloballog=OFF;setgloballog_slow_queries=OFF;--long_query_time參數(shù)說明--v4.0,4.1,5.0,v5.1到5.1.20(包括):不支持毫秒級別的慢查詢分析(支持精度為1-10秒);--5.1.21及以后版本:支持毫秒級別的慢查詢分析,如0.1;--6.0到6.0.3:不支持毫秒級別的慢查詢分析(支持精度為1-10秒);--6.0.4及以后:支持毫秒級別的慢查詢分析;通過日志中記錄的Sql,迅速定位到具體的文件,優(yōu)化sql看一下,是否速度提升了呢?
成都創(chuàng)新互聯(lián)公司憑借在網(wǎng)站建設、網(wǎng)站推廣領域領先的技術(shù)能力和多年的行業(yè)經(jīng)驗,為客戶提供超值的營銷型網(wǎng)站建設服務,我們始終認為:好的營銷型網(wǎng)站就是好的業(yè)務員。我們已成功為企業(yè)單位、個人等客戶提供了成都做網(wǎng)站、網(wǎng)站建設服務,以良好的商業(yè)信譽,完善的服務及深厚的技術(shù)力量處于同行領先地位。
mysql有以下幾種日志: 錯誤日志: -log-err 查詢?nèi)罩荆?-log 慢查詢?nèi)罩? -log-slow-queries 更新日志: -log-update 二進制日志: -log-bin 在mysql的安裝目錄下,打開my.ini,在后面加上上面的參數(shù),保存后重啟mysql服務就行了。 例如:#Enter a name for the binary log. Otherwise a default name will be used. #log-bin=#Enter a name for the query log file. Otherwise a default name will be used. #log=#Enter a name for the error log file. Otherwise a default name will be used. log-error=#Enter a name for the update log file. Otherwise a default name will be used. #log-update= 上面只開啟了錯誤日志,要開其他的日志就把前面的“#”去掉 查看命令:①show variables like 'log_%';查看所有的log命令 ②show variables like 'log_bin';查看具體的log命令
開啟mysql慢查詢?nèi)罩静榭磁渲茫?/p>
//查看慢查詢時間
show
variables
like
"long_query_time";默認10s
//查看慢查詢配置情況
show
status
like
"%slow_queries%";
//查看慢查詢?nèi)罩韭窂?/p>
show
variables
like
"%slow%";
修改配置文件
在my.ini中加上下面兩句話
log-slow-queries
=
d:\wamp\mysql_slow_query.log
long_query_time=5
第一句使用來定義慢查詢?nèi)罩镜穆窂剑ㄒ驗槭莣indows,所以不牽涉權(quán)限問題)
第二句使用來定義查過多少秒的查詢算是慢查詢,我這里定義的是5秒
第二步:查看關于慢查詢的狀態(tài)
執(zhí)行如下sql語句來查看mysql慢查詢的狀態(tài)
show
variables
like
'%slow%';
執(zhí)行結(jié)果會把是否開啟慢查詢、慢查詢的秒數(shù)、慢查詢?nèi)罩镜刃畔⒋蛴≡谄聊簧稀?/p>
第三步:執(zhí)行一次慢查詢操作
其實想要執(zhí)行一次有實際意義的慢查詢比較困難,因為在自己測試的時候,就算查詢有20萬條數(shù)據(jù)的海量表,也只需要0.幾秒。我們可以通過如下語句代替:
select
sleep(10);
第四步:查看慢查詢的數(shù)量
通過如下sql語句,來查看一共執(zhí)行過幾次慢查詢:
show
global
status
like
'%slow%';
mysql日志的配置:
注意:這些日文件在mysql重啟的時候才會生成
#記錄所有sql語句
log=e:/mysqllog/mysql.log
#記錄數(shù)據(jù)庫啟動關閉信息,以及運行過程中產(chǎn)生的錯誤信息
log-error=e:/mysqllog/myerror.log
#
記錄除select語句之外的所有sql語句到日志中,可以用來恢復數(shù)據(jù)文件
log-bin=e:/mysqllog/bin
#記錄查詢慢的sql語句
log-slow-queries=e:/mysqllog/slow.log
#慢查詢時間
long_query_time=0.5
這是一個慢查詢?nèi)罩镜恼故竟ぞ撸軌驇椭?DBA 或者開發(fā)人員分析數(shù)據(jù)庫的性能問題,給出全面的數(shù)據(jù)擺脫直接查看 slow-log。QAN(Query Analytics)
PMM 目前有 2 個版本,但是對于 QAN 來說其大致由三部分組成:
QAN-Agent(client):負責采集 slow-log 的數(shù)據(jù)并上報到服務端
QAN-API(server):負責存儲采集的數(shù)據(jù),并對外提供查詢接口
QAN-APP:專門用來展示慢查詢數(shù)據(jù)的 grafana 第三方插件
1. 數(shù)據(jù)流轉(zhuǎn)
slow-log -- QAN-Agent -- QAN-API -- QAN-APP(grafana)
2. pmm1 架構(gòu)圖
3. pmm2 架構(gòu)圖
1)怎么查看mysql是否啟用了日志
mysqlshow variables like 'log_bin';
2)怎樣知道當前的日志
mysql show master status;
3)如何查看當前的二進制日志,可以使用mysqlbinlog的的工具,命令如下:
shellmysqlbinlog mail-bin.000001(要寫絕對問題路徑 d://)
或者shellmysqlbinlog mail-bin.000001 | tail
4)mysql有以下幾種日志:
錯誤日志:????
-log-err
查詢?nèi)罩荆????
-log
慢查詢?nèi)罩????
-log-slow-queries
更新日志:?????
-log-update
二進制日志:?
-log-bin
在mysql的安裝目錄下,打開my.ini,在后面加上上面的參數(shù),保存后重啟mysql服務就行了。
例如:
#Enter a name for the error
log file.?? Otherwise a default
name will be used.
log-error=err.log
#Enter a name for the query
log file. Otherwise a default name will be used.
#log=
#Enter a name for the slow
query log file. Otherwise a default name will be used.
#log-slow-queries=
#Enter a name for the update
log file. Otherwise a default name will be used.
#log-update=
#Enter a name for the binary
log. Otherwise a default name will be used.
#log-bin=
上面只開啟了錯誤日志,要開其他的日志就把前面的“#”去掉。
long_query_time =2--
這里設置慢日志的最大實現(xiàn)是指執(zhí)行超過多久的sql會被log下來,這里是2秒
log-slow-queries=slowqueris.log --將查詢返回較慢的語句進行記錄,這里設置慢日志的名稱
log-queries-not-using-indexes
= nouseindex.log --就是字面意思,log下來沒有使用索引的query
5)下面是配置日志的幾種方式,不一定全都要配置,請根據(jù)自身需求選擇性配置
log=mylog.log
--對所有執(zhí)行語句進行記錄
log-error=log-error.log
log=log-query.log
log-queries-not-using-indexes
log-warnings=2
log-slow-queries=log-slow-query.log
log-update=log-update.log
long_query_time=2
1、首先確認你日志是否啟用了mysqlshow variables like 'log_bin'。
2、如果啟用了,即ON,那日志文件就在mysql的安裝目錄的data目錄下。
3、怎樣知道當前的日志mysql show master status。
4、看二進制日志文件用mysqlbinlog,shellmysqlbinlog mail-bin.000001或者shellmysqlbinlog mail-bin.000001 | tail,Windows 下用類似的。
MySQL的日志操作:
1、首先,登陸mysql后,執(zhí)行sql語句:show variables like 'log_bin'。
2、#錯誤日志log-errol開啟方式:在my.ini的[mysqld]選項下:添加代碼:log-error=E:\log-error.txt。
記錄內(nèi)容:主要是記錄啟動、運行或停止mysqld時出現(xiàn)的致命性問題,都是系統(tǒng)級的錯誤記錄。
3、#查詢?nèi)罩荆簂og,開啟方式:在my.ini的[mysqld]選項下:添加代碼:log=E:/mysql_log.txt。
4、#二進制日志:log-bin,開啟方式:在my.ini的[mysqld]選項下:添加代碼:log-bin=E:/mysql_log_bin,記錄內(nèi)容:主要是記錄所有的更改數(shù)據(jù)的語句,可使用mysqlbinlog命令恢復數(shù)據(jù)。