国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 宜川县| 元阳县| 宝应县| 竹北市| 黔东| 吉木乃县| 汝阳县| 池州市| 碌曲县| 文山县| 克什克腾旗| 吉安市| 水城县| 五莲县| 龙口市| 扶余县| 松溪县| 黎城县| 泸州市| 东宁县| 同仁县| 东莞市| 调兵山市| 申扎县| 阿克苏市| 襄城县| 开封市| 灌阳县| 柳州市| 遂宁市| 饶平县| 崇仁县| 柳河县| 临洮县| 都兰县| 赤城县| 宁陵县| 茶陵县| 巩留县| 台湾省| 正定县|