MySQL學習筆記(一) MySQL基礎架構

2021-09-17 21:16:35 字數 1258 閱讀 4701

mysql可分為server層和儲存引擎層兩部分

1.1 server層:

聯結器 許可權驗證 盡量使用長連線,但是長連線會消耗記憶體,可以定時清理,也可以重新初始化鏈結資源

查快取(一般不用,除非讀多寫少 8.0移除)分析器 詞法分析,語法分析,語法解析

優化器 使用哪個索引 表連線順序

執行器 執行語句,查詢是否具有讀寫許可權

1.2 儲存引擎層2.1 redo log

redo log 是innodb引擎特有的物理日誌 ,記錄「在某個資料頁做了什麼修改」,迴圈寫入固定大小記憶體,redo log的存在是為了保證即使資料庫發生異常重啟,之前提交的記錄都不會丟失,這個能力稱為crash-safe

wal,write-ahead logging,先寫日誌再寫磁碟

innodb_flush_log_at_trx_commit引數決定寫磁碟時機,設定為1: 系統預設模式,每次事務提交時mysql都會把log buffer的資料寫入log file,並且flush(刷到磁碟)中

2.2 binlog

追加寫入檔案,到達指定大小切換另乙個檔案

三個用途:

1.恢復:利用binlog日誌恢復資料庫資料

2.複製:主從同步

3.審計:通過二進位制日誌中的資訊來進行審計,判斷是否有對資料庫進行注入攻擊

三種模式:

1.statement 記錄的是修改sql語句

2.row 記錄的是每行實際資料的變更,記兩條,更新前和更新後

3.mixed statement和row模式的混合

2.3 更新語句執行流程

innodb:查詢需要更新的記錄

innodb:資料是否在記憶體中,存在直接返回,否則從磁碟讀入記憶體

server:執行器將該記錄進行更新

innodb:將記憶體資料更新

innodb:寫入redolog,處於prepare階段

server:寫binlog

innodb:提交事務,處於commit階段

2.4 兩階段提交策略

先在引擎層寫redolog,redolog處於prepare

然後在server寫binlog

事務提交,redolog commit提交寫入磁碟

崩潰恢復

Mysql學習筆記一

最近在學習mysql,以後工作會慢慢往這方面轉向,所以提前預習。現在全世界都喊著去ioe,所以咱也必須提前做個準備。衝.第一章基礎知識 1 改變表結構 增加列 alter table test add name char 6 更改列定義 alter table test change year bo...

Mysql學習筆記(一)

一 mysql學習筆記 觸發器 觸發器四要點 1.監視誰 table 2.監視事件 insert update delete 3.觸發時間 after before 4.觸發事件 insert update delete 語法 create trigger 觸發器名稱 after before 觸發...

Mysql學習筆記一

一 mysql資料型別 1 整數 浮點數 定點型別 1個位元組佔8位,漢字佔兩個位元組 16位 正數定義成unsigned 定點數 decimal m,d m表示總長度 d表示小數字 存入的時候四捨五入計算 範圍與double相同 例子 decimal 5,2 123.45 2 日期與時間 一般用d...