InnoDB體系架構總結(一)

2022-08-20 03:12:11 字數 1995 閱讀 2484

緩衝池: 

是一塊記憶體區域,通過記憶體的速度來彌補磁碟速度較慢對資料庫效能的影響。在資料庫中讀取的頁資料會存放到緩衝池中,下次再讀取相同頁的時候,會首先判斷

該頁是否在緩衝池中。對於資料庫中頁的修改操作,會首先修改在緩衝池中的頁,然後再以一定的頻率重新整理到磁碟上。緩衝池中快取的資料頁有 索引頁,資料頁,undo頁等。

show variables like 'innodb_buffer_pool_size'; #

檢視緩衝池大小

重做日誌:

主要是用來實現事務的永續性,當系統由於不確定的原因奔潰之後,innodb儲存引擎會使用重做日誌恢復到掉電前的的狀態,來保證資料的完整性。由兩部分組成:一是記憶體中的重做日誌緩衝(redo log buffer),是易失的;二是重做日誌檔案(redo log file),是持久的。innodb儲存引擎會首先將重做日誌資訊放到緩衝區,然後以一定頻率將其重新整理到重做日誌檔案中。記錄了對於innodb儲存引擎的事務日誌。

事務提交時必須先將該事務的所有日誌寫入重做日誌檔案進行持久化,待事務的commit操作完才算完成。這裡的日誌指的就是重做日誌。在innodb儲存引擎中,由redo log 和 undo log.

show variables like 'innodb_log_buffer_size'; #

檢視重做日誌緩衝

二進位制日誌:

記錄了對mysql資料庫執行更改的所有操作,但是不包括select和show這類操作。主要使用者資料複製,如主從複製中。

show variables like 'binlog_cache_size'; #

二進位制日誌緩衝檔案大小

在支援事務的儲存引擎中,所有未提交的二進位制日誌會被記錄到乙個快取中,等到該事務提交時,

會直接將緩衝中的二進位制日誌寫入到二進位制日誌檔案中。這個配置是由變數 binlog_cache_size 決定的。

binlog_cache_size 是基於session的。

innodb 事務

redo log 是inndb保證事務acid屬性的重要機制 主要流程為

1.將資料讀入innodb buffer pool ,並對相關記錄加獨佔鎖

2.將undo資訊寫入undo表空間的回滾段中

3.更改快取頁中的資料,並將更新記錄寫入redo buffer中

4.提交時,根據innodb_flush_log_at_trx_commit 的設定,將不同的方式將

redo_buffer中的更新記錄重新整理到innodb redo

logfile中,然後釋放獨佔鎖

5.最後 後台io執行緒根據需要擇機將快取中更新過的資料重新整理到磁碟檔案中

#show engine innodb status 命令檢視當前日誌的寫入情況

innodb記憶體優化

innodb_buffer_pool_size #

儲存表資料和索引資料的最大快取 在保證作業系統和其它程式有足夠記憶體可用的情況下 innodb_buffer_pool_size的值越大 快取命中率越高 訪問innodb表需要的磁碟i/o就越少 效能也就越高

innodb_log_buffer_size #

決定innodb 重做日誌快取池的大小 對於可能產生大量 更新記錄的大事務 可增加其大小 避免在事務提交前 就執行不必要的日誌寫入磁碟操作

innodb應用優化

作用:儲存select查詢的文字和結果,若下次收到相同查詢,會從查詢快取中直接得到結果,而不再需要解析和查詢

innodb 體系架構

innodb儲存引擎的體系架構,可簡單劃分成三層 資料檔案 磁碟上的資料檔案 記憶體池 快取磁碟上的資料,方便讀取,同時在對磁碟檔案資料修改之前在這裡快取,然後按一定規重新整理到磁碟 後台執行緒 主要負責重新整理記憶體池中的資料,保證記憶體池中都是最近資料。同時將記憶體中修改的資料重新整理到磁碟 磁...

InnoDB體系架構

reference innodb主要包括了記憶體池 後台執行緒以及儲存檔案。記憶體池又是由多個記憶體塊組成的,主要包括快取磁碟資料 redo log緩衝等 後台執行緒則包括了master thread io thread以及purge thread等 由innodb儲存引擎實現的表的儲存結構檔案一般...

InnoDB體系架構(一)後台執行緒

innodb體系架構 後台執行緒 innodb儲存引擎是多執行緒的模型,所以猶太有多個不同的後台執行緒,負責處理不同的任務,主要有 master thread io thread purge thread page cleaner thread四種。從上面圖可以簡單的了解innodb儲存引擎有多個記...