在日常開發(fā)當(dāng)中,經(jīng)常會遇到頁面打開速度極慢的情況,通過排除,確定了,是數(shù)據(jù)庫的影響,為了迅速查找具體的SQL,可以通過Mysql的日志記錄方法。
成都創(chuàng)新互聯(lián)公司長期為上千多家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為大足企業(yè)提供專業(yè)的成都做網(wǎng)站、成都網(wǎng)站制作,大足網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
-- 打開sql執(zhí)行記錄功能
set global log_output='TABLE'; -- 輸出到表
set global log=ON; -- 打開所有命令執(zhí)行記錄功能general_log, 所有語句: 成功和未成功的.
set global log_slow_queries=ON; -- 打開慢查詢sql記錄slow_log, 執(zhí)行成功的: 慢查詢語句和未使用索引的語句
set global long_query_time=0.1; -- 慢查詢時間限制(秒)
set global log_queries_not_using_indexes=ON; -- 記錄未使用索引的sql語句
-- 查詢sql執(zhí)行記錄
select * from mysql.slow_log order by 1; -- 執(zhí)行成功的:慢查詢語句,和未使用索引的語句
select * from mysql.general_log order by 1; -- 所有語句: 成功和未成功的.
-- 關(guān)閉sql執(zhí)行記錄
set global log=OFF;
set global log_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看一下,是否速度提升了呢?
這是一個慢查詢?nèi)罩镜恼故竟ぞ?,能夠幫?DBA 或者開發(fā)人員分析數(shù)據(jù)庫的性能問題,給出全面的數(shù)據(jù)擺脫直接查看 slow-log。QAN(Query Analytics)
PMM 目前有 2 個版本,但是對于 QAN 來說其大致由三部分組成:
QAN-Agent(client):負(fù)責(zé)采集 slow-log 的數(shù)據(jù)并上報到服務(wù)端
QAN-API(server):負(fù)責(zé)存儲采集的數(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)圖
mysql有以下幾種日志:
錯誤日志: -log-err
查詢?nèi)罩荆?-log
慢查詢?nèi)罩? -log-slow-queries
更新日志: -log-update
二進制日志: -log-bin
在mysql的安裝目錄下,打開my.ini,在后面加上上面的參數(shù),保存后重啟mysql服務(wù)就行了。
例如:#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 慢日志
一、MySQL數(shù)據(jù)庫有幾個配置選項可以幫助我們及時捕獲低效SQL語句1,slow_query_log這個參數(shù)設(shè)置為ON,可以捕獲執(zhí)行時間超過一定數(shù)值的SQL語句。2,long_query_time當(dāng)SQL語句執(zhí)行時間超過此數(shù)值時,就會被記錄到日志中,建議設(shè)置為1或者更短。3,slow_query_log_file記錄日志的文件名。4,log_queries_not_using_indexes這個參數(shù)設(shè)置為ON,可以捕獲到所有未使用索引的SQL語句,盡管這個SQL語句有可能執(zhí)行得挺快。二、檢測mysql中sql語句的效率的方法1、通過查詢?nèi)罩荆?)、Windows下開啟MySQL慢查詢MySQL在Windows系統(tǒng)中的配置文件一般是是my.ini找到[mysqld]下面加上代碼如下log-slow-queries=F:/MySQL/log/mysqlslowquery。loglong_query_time=2(2)、Linux下啟用MySQL慢查詢MySQL在Windows系統(tǒng)中的配置文件一般是是my.cnf找到[mysqld]下面加上代碼如下log-slow-queries=/data/mysqldata/slowquery。loglong_query_time=2說明log-slow-queries=F:/MySQL/log/mysqlslowquery。為慢查詢?nèi)罩敬娣诺奈恢?,一般這個目錄要有MySQL的運行帳號的可寫權(quán)限,一般都將這個目錄設(shè)置為MySQL的數(shù)據(jù)存放目錄;long_query_time=2中的2表示查詢超過兩秒才記錄;2.showprocesslist命令SHOWPROCESSLIST顯示哪些線程正在運行。您也可以使用mysqladminprocesslist語句得到此信息。各列的含義和用途:ID列一個標(biāo)識,你要kill一個語句的時候很有用