推薦(免費):SQL
零、資料庫驅動
一、資料庫連線池
二、SQL 接口
三、查詢解析器
四、MySQL 查詢最佳化器
# #查詢最佳化器會呼叫儲存引擎的接口,去執行SQL,也就是說真正
執行SQL 的動作是在儲存引擎中完成的。 資料是被存放在記憶體或磁碟中的
執行器最終最依照一系列的執行計畫去呼叫儲存引擎的介面去完成SQL 的執行
#七、Buffer Pool
Buffer Pool 就是我們第一次在查詢的時候會將查詢的結果存到Buffer Pool 中,這樣後面再有請求的時候就會先從緩衝池去查詢,如果沒有再去磁碟中查找,然後在放到Buffer Pool 中
Buffer Pool中被使用的資料回被加鎖。
作用:利用undo 日誌檔完成交易回溯
##################2、redo 日誌檔### :記錄資料被修改後的樣子#########redo 記錄的是資料修改之後的值,不管交易是否提交都會記錄下來######MySQL 為了提高效率,所以將這些操作都先放在記憶體中完成,更新後的資料會記錄在redo log buffer 中,然後會在某個時機將其持久化到磁碟中。 ##################3、bin log 日誌檔:### 記錄整個操作過程###性質 | redo Log | bin Log |
---|---|---|
檔案大小 | redo log 的大小是固定的(配置中也可以設置,一般預設的就足夠了) | bin log 可透過設定參數max_bin log_size 設定每個bin log 檔案的大小(但一般不建議修改)。 |
實作方式 |
redo log 是InnoDB 引擎層實作的(也就是說是Innodb 儲存引起過獨有的) |
bin log 是MySQL 層實現的,所有引擎都可以使用bin log 日誌 |
記錄方式 | redo log 採用迴圈寫的方式記錄,當寫到結尾時,會回到開頭循環寫日誌。 | bin log 透過追加的方式記錄,當檔案大小大於給定值後,後續的日誌會記錄到新的檔案上 |
使用場景 |
redo log 適用於崩潰復原(crash-safe)(這點其實非常類似與Redis 的持久化特徵) |
bin log 適用於主從複製和資料恢復 |
bin log 記錄的是整個操作記錄(這個對於主從複製具有非常重要的意義)
以上是執行一句SQL的狀況的詳細內容。更多資訊請關注PHP中文網其他相關文章!