国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

InnoDB 中文參考手冊 --- 10 multiversioning 的實現(xiàn)

2024-07-21 02:08:52
字體:
供稿:網(wǎng)友
innodb 中文參考手冊 --- 犬犬(心帆)翻譯 10 multiversioning 的實現(xiàn)
因為 innodb 是一個 multiversioned 數(shù)據(jù)庫系統(tǒng),它必須在表空間內(nèi)保存記錄行的先期版本信息。這個信息被存儲在被稱為回滾段(rollback segment)的數(shù)據(jù)結(jié)構(gòu)中,這與 oracle 相似。

innodb 在內(nèi)部處理時在數(shù)據(jù)庫中為每行記錄添加兩個字段。一個6-byte 字段描述最后一個插入或更新該行的事務(wù)的標識符。同樣被刪除記錄在內(nèi)部處理上為更新該行的某一標志位, 該標志位用于記錄它已被刪除。每行記錄同樣包含著一個名為滾指針(roll pointer)的 7-byte 字段。這個指針指向一個在回滾段中存儲的撤消日志記錄(undo log record)。如果該行被更新過,那么撤消日志記錄中包含必要的信息來重建它被更新前的內(nèi)容。

innodb 需要通過一個事務(wù)的回滾來實現(xiàn)使用回滾段中的信息執(zhí)行撤銷操作。它也用于為一個 consistent read 來重建一個記錄行的早期版本。

在回滾段中的撤銷日志被分為插入和更新撤銷日志。插入撤銷日志(insert undo logs)僅僅只在事務(wù)回滾時需要,它可以在事務(wù)一提交就被拋棄。更新撤銷日志(update undo logs)同樣也在 consistent reads 中使用,它們將在當(dāng)前沒有事務(wù)時被拋棄。innodb 指派了一個數(shù)據(jù)快照,而 consistent read 需要更新撤銷日志中的信息來重建一個數(shù)據(jù)庫行的早期版本。

必須記錄有規(guī)律地提交你的事務(wù),同樣的這些事務(wù)只發(fā)出了consistent reads。否則 innodb 不能夠從更新撤銷日志中拋棄數(shù)據(jù),則回滾段可能會增加地太大而填滿了整個表空間。

回滾段中的撤銷日志記錄的物理尺寸通常比它們相對應(yīng)的插入或更新的記錄要小些。 你可以通過學(xué)習(xí)這些信息估算出回滾段所需的空間。

在 multiversioning 的設(shè)計中,以一條 sql 語句刪除一個記錄行時,該記錄并不會立即從數(shù)據(jù)庫中移除。只在當(dāng) innodb 拋棄刪除的更新撤銷日志記錄時,它才會從數(shù)據(jù)庫中物理地移除相應(yīng)的記錄行以及它的索引。 這個移除操作被稱為 purge,它是非常快的,通常以與執(zhí)行刪除的 sql 語句相同的時間順序執(zhí)行。
 

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 揭西县| 旅游| 沁阳市| 肇东市| 北安市| 和田县| 射阳县| 南木林县| 泽库县| 六安市| 鄂温| 海兴县| 舒兰市| 北京市| 宜君县| 昌乐县| 安国市| 唐河县| 龙井市| 明溪县| 都兰县| 嘉定区| 泸州市| 墨脱县| 军事| 阿瓦提县| 澜沧| 怀化市| 罗甸县| 三穗县| 阜南县| 融水| 岳阳县| 常熟市| 个旧市| 绥中县| 曲松县| 永德县| 阜康市| 柯坪县| 丹棱县|