亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

淺談MySQL中的六種日志

 更新時間:2022年03月23日 09:43:03   作者:Java魚仔  
MySQL中存在著6種日志,本文是對MySQL日志文件的概念及基本使用介紹,不涉及底層內容,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

(一)概述

MySQL中存在著以下幾種日志:重寫日志(redo log)、回滾日志(undo log)、二進制日志(bin log)、錯誤日志(error log)、慢查詢日志(slow query log)、一般查詢日志(general log)。

MySQL中的數(shù)據(jù)變化會體現(xiàn)在上面這些日志中,比如事務操作會體現(xiàn)在redo log、undo log以及bin log中,數(shù)據(jù)的增刪改查會體現(xiàn)在 binlog 中。本章是對MySQL日志文件的概念及基本使用介紹,不涉及底層內容。針對開發(fā)人員而言,這幾種日志中最有可能使用到的是慢查詢日志。

(二)redo log

redo log是一種基于磁盤的數(shù)據(jù)結構,用來在MySQL宕機情況下將不完整的事務執(zhí)行數(shù)據(jù)糾正,redo日志記錄事務執(zhí)行后的狀態(tài)。

當事務開始后,redo log就開始產(chǎn)生,并且隨著事務的執(zhí)行不斷寫入redo log file中。redo log file中記錄了xxx頁做了xx修改的信息,我們都知道數(shù)據(jù)庫的更新操作會在內存中先執(zhí)行,最后刷入磁盤。

redo log就是為了恢復更新了內存但是由于宕機等原因沒有刷入磁盤中的那部分數(shù)據(jù)。

(三)undo log

undo log主要用來回滾到某一個版本,是一種邏輯日志。undo log記錄的是修改之前的數(shù)據(jù),比如:當delete一條記錄時,undolog中會記錄一條對應的insert記錄,從而保證能恢復到數(shù)據(jù)修改之前。在執(zhí)行事務回滾的時候,就可以通過undo log中的記錄內容并以此進行回滾。

undo log還可以提供多版本并發(fā)控制下的讀?。?strong>MVCC)。

(四)bin log

MySQL的bin log日志是用來記錄MySQL中增刪改時的記錄日志。簡單來講,就是當你的一條sql操作對數(shù)據(jù)庫中的內容進行了更新,就會增加一條bin log日志。查詢操作不會記錄到bin log中。bin log最大的用處就是進行主從復制,以及數(shù)據(jù)庫的恢復。

通過下面的命令可以查看是否開啟binlog日志

show VARIABLES like '%log_bin%'

開啟binlog的方式如下:

log-bin=mysql-bin
server-id=1
binlog_format=ROW

其中l(wèi)og-bin指定日志文件的名稱,默認會放到數(shù)據(jù)庫目錄下,可通過以下命令查看

show VARIABLES like '%datadir%'

(五)error log

error log主要記錄MySQL在啟動、關閉或者運行過程中的錯誤信息,在MySQL的配置文件my.cnf中,可以通過log-error=/var/log/mysqld.log 執(zhí)行mysql錯誤日志的位置。

通過MySQL的命令

 show variables like "%log_error%";

也可以獲取到錯誤日志的位置。

(六)slow query log

慢查詢日志用來記錄執(zhí)行時間超過指定閾值的SQL語句,慢查詢日志往往用于優(yōu)化生產(chǎn)環(huán)境的SQL語句。可以通過以下語句查看慢查詢日志是否開啟以及日志的位置:

 show variables like "%slow_query%";

慢查詢日志的常用配置參數(shù)如下:

slow_query_log=1  #是否開啟慢查詢日志,0關閉,1開啟
slow_query_log_file=/usr/local/mysql/mysql-8.0.20/data/slow-log.log  #慢查詢日志地址(5.6及以上版本)
long_query_time=1 #慢查詢日志閾值,指超過閾值時間的SQL會被記錄
log_queries_not_using_indexes  #表示未走索引的SQL也會被記錄

分析慢查詢日志一般會用專門的日志分析工具。找出慢SQL后可以通過explain關鍵字進行SQL分析,找出慢的原因。

(七)general log

general log 記錄了客戶端連接信息以及執(zhí)行的SQL語句信息,通過MySQL的命令

show variables like '%general_log%';

可以查看general log是否開啟以及日志的位置。

general log 可通過配置文件啟動,配置參數(shù)如下:

general_log = on
general_log_file = /usr/local/mysql/mysql-8.0.20/data/hecs-78422.log

普通查詢日志會記錄增刪改查的信息,因此一般是關閉的。

到此這篇關于淺談MySQL中的六種日志的文章就介紹到這了,更多相關MySQL 日志內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論