InnoDB 中文參考手冊 --- 10 multiversioning 的實現 (轉)
因為 InnoDB 是一個 multiversioned ,它必須在表空間內儲存記錄行的先期版本資訊。這個資訊被在被稱為回滾段(rollback segment)的資料結構中,這與 相似。
InnoDB 在內部處理時在資料庫中為每行記錄新增兩個欄位。一個6-byte 欄位描述最後一個插入或該行的事務的識別符號。同樣被刪除記錄在內部處理上為更新該行的某一標誌位, 該標誌位用於記錄它已被刪除。每行記錄同樣包含著一個名為滾指標(roll pointer)的 7-byte 欄位。這個指標指向一個在回滾段中儲存的撤消日誌記錄(undo log record)。如果該行被更新過,那麼撤消日誌記錄中包含必要的資訊來重建它被更新前的內容。
InnoDB 需要透過一個事務的回滾來實現使用回滾段中的資訊撤銷操作。它也用於為一個 consistent read 來重建一個記錄行的早期版本。
在回滾段中的撤銷日誌被分為插入和更新撤銷日誌。插入撤銷日誌(Insert undo logs)僅僅只在事務回滾時需要,它可以在事務一提交就被拋棄。更新撤銷日誌(Update undo logs)同樣也在 consistent reads 中使用,它們將在當前沒有事務時被拋棄。InnoDB 指派了一個資料快照,而 consistent read 需要更新撤銷日誌中的資訊來重建一個資料庫行的早期版本。
必須記錄有規律地提交你的事務,同樣的這些事務只發出了consistent reads。否則 InnoDB 不能夠從更新撤銷日誌中拋棄資料,則回滾段可能會增加地太大而填滿了整個表空間。
回滾段中的撤銷日誌記錄的物理尺寸通常比它們相對應的插入或更新的記錄要小些。 你可以透過學習這些資訊估算出回滾段所需的空間。
在 multiversioning 的設計中,以一條 SQL 語句刪除一個記錄行時,該記錄並不會立即從資料庫中移除。只在當 InnoDB 拋棄刪除的更新撤銷日誌記錄時,它才會從資料庫中物理地移除相應的記錄行以及它的。 這個移除操作被稱為 purge,它是非常快的,通常以與執行刪除的 SQL 語句相同的時間順序執行。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752019/viewspace-957798/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- InnoDB 中文參考手冊 --- 13 出錯處理 (轉)
- InnoDB 中文參考手冊 --- 3 建立一個 InnoDB 資料庫 (轉)資料庫
- InnoDB 中文參考手冊 --- 8 InnoDB 事務模式與鎖定 (轉)模式
- InnoDB 中文參考手冊 --- 11 表和索引結構 (轉)索引
- InnoDB 中文參考手冊 --- 15 故障檢測與修復 (轉)
- InnoDB 中文參考手冊 --- 6 備份和恢復 InnoDB 資料庫 (轉)資料庫
- InnoDB 中文參考手冊 --- 5 新增與移除 InnoDB 資料和日誌檔案 (轉)
- InnoDB 中文參考手冊 --- 12 檔案空間管理和磁碟 I/O (轉)
- DOJO API 中文參考手冊API
- InnoDB 中文參考手冊 --- 7 將 InnoDB 資料庫移動到另一臺機器中 (轉)資料庫
- MySQL中文參考手冊5(安裝MySQL下) (轉)MySql
- MySQL 4.1.0 中文參考手冊 --- 6.2 列型別 (轉)MySql型別
- DOM參考手冊及事件參考手冊事件
- Git命令參考手冊(轉)Git
- MySQL 5.1中文參考手冊MySql
- MySQL 4.1.0 中文參考手冊 --- 6.8 MySQL 全文搜尋 (轉)MySql
- MySQL 4.1.0 中文參考手冊 --- 6.6 基本的 MySQL 使用者實用命令 (轉)MySql
- SQL 語法參考手冊(轉)
- delphi函式參考手冊 (轉)函式
- SQL語法參考手冊(轉)SQL
- MySQL 4.1.0 中文參考手冊 --- 6.9 MySQL 查詢快取 (轉)MySql快取
- SQL 語法參考手冊(SQL) (轉)SQL
- MySQL 4.1.0 中文參考手冊 --- 6.5 資料定義: CREATE、DROP、ALTER (轉)MySql
- mysql最新版中文參考手冊線上瀏覽MySql
- JavaScript物件參考手冊JavaScript物件
- JQuery 1.6參考手冊jQuery
- 參考手冊總結
- MySQL 5.1參考手冊MySql
- mysql 5.1 參考手冊MySql
- MySQL 4.1.0 中文參考手冊 --- 6.7 MySQL 事務與鎖定命令 (轉)MySql
- Oracle分析函式參考手冊(轉)一Oracle函式
- Oracle分析函式參考手冊(轉)二Oracle函式
- Oracle X$ table 參考手冊Oracle
- JavaScript語言參考手冊JavaScript
- SQL語法參考手冊SQL
- MySQL 4.1.0 中文參考手冊 --- 6.3 用於 SELECT 和 WHERE 子句的函式 (1) (轉)MySql函式
- Oracle 9i 分析函式參考手冊(轉)Oracle函式
- 傾情奉獻《Oracle DBA的UNIX袖珍參考手冊》中文版Oracle