from 慕課網教程
日誌檔案記錄各種操作和異常,一般由server層處理
資料檔案記錄資料,一般由儲存引擎處理
除此之外有配置檔案,pid檔案,socket檔案
二進位制日誌 binlog
binlog 以二進位制形式,將所有修改資料的 query 記錄到日誌檔案中,包括 query 語句、執行時間、相關事務資訊等。
redo log
redo log 記錄了 innodb 所做的所有物理變更和事務資訊。
.frm檔案
.frm 檔案存放表相關的元資料,包括表結構資訊等。
每張表都有乙個對應的 .frm 檔案,不管這張表使用哪種儲存引擎。innodb 引擎
a. 如果是獨享表空間的儲存方式,則使用.idb檔案來存放資料,每張表都會有乙個單獨的 .ibd 檔案。
b. 如果是共享表空間的儲存方式,則使用ibdata檔案來存放資料,所有表共用乙個 ibdata 檔案。
對於innodb 和查詢語句不同,更新語句多了兩個重要的日誌模組: binlog(歸檔日誌)和redo log(重做日誌)
binlog和redo log的區別- binlog是邏輯日誌,記錄某個語句的基本邏輯,即sql語句;redo log是物理日誌,記錄在某個資料頁所做的修改;執行:- binlog是在mysql的server層實現,所有的儲存引擎都可以使用binlog這個日誌模組;redo log是innodb儲存引擎特有的日誌模組;
- binlog是追加寫,在寫滿或重啟之後,會生成新的binlog檔案,之前的日誌不會進行覆蓋;redo log是迴圈寫,空間大小是固定的;
- binlog 是在事務最終提交前寫入的;redo log是在事務執行過程不斷的寫入;
- binlog可以應用於資料歸檔、主從搭建等場景;redo log作為異常宕機或者介質故障後的資料恢復使用;
update a set
value
=value+1
where id=
1;
連線認證授權
解析語句
先通過引擎查詢 id=1 這一行資料,引擎會先在記憶體中找,找到就直接返回給執行器,沒找到就去硬碟找,還沒查到返回錯誤
找到後,執行器把資料+1後產生一行新資料,呼叫資料引擎介面,要引擎更新這行資料
引擎先將資料更新到記憶體中,並記錄到redo log,redo log狀態為 prepare
執行器將操作記錄到binlog
引擎將資料寫入到硬碟
執行器呼叫引擎的事務提交介面,引擎將redo log的狀態改為 commit,更新完成
mysql物理檔案 MySQL物理檔案組成
mysql物理檔案組成 1.錯誤日誌 error log 錯誤日誌記錄了mysql server執行過程中所有較為嚴重的警告和錯誤資訊,以及mysql server每次啟動和關閉的詳細資訊,在預設情況下,系統記錄錯誤日誌的功能是關閉的,錯誤資訊被輸出到標準錯誤輸出,如果要開啟系統記錄錯誤日誌的功能,...
MySQL物理檔案組成
錯誤日誌記錄了mysql執行過程中所有較為嚴重的警告和錯誤資訊,以及mysql server每次啟動和關閉的詳細資訊。在預設情況下,系統記錄錯誤日誌的功能是關閉的,如果要開啟系統記錄錯誤日誌的功能,需要在啟動時開啟 log error file name 修改其存放目錄和檔名。為了方便維護,有時候會...
mysql 哪些檔案組成 MySQL物理檔案組成
1.1日誌檔案 1 錯誤日誌 error log 記錄了myql server 執行過程中所有較為嚴重的警告和錯誤資訊,以及mysqlserver 每次啟動和關閉的詳細資訊。在預設情況下,系統記錄錯誤日誌的功能是關閉的.2 二進位制日誌 binary log binary log index nam...