数据库杂谈

MySQL InnoDB purge源码解析

purge 数据库系统中,事务删除记录时,不会立即从B树中删除,而是打上删除标记。这样做有以下两个原因: 实现事务的隔离性。事务在删除记录并提交后,其他事务可能需要访问这条记录,只有当记录对所有活动事务都不可见时,才可以从B树中删除。打上删除标记后,其他事务通过key或索引扫描可以定位到这条记录,判断删除对当前事务不可见、或通过记录上rollptr找到undo日志拼装出最...

MySQL InnoDB mtr源码解析

Mini Transaction MySQL InnoDB中,mtr是一个非常重要的模块,主要控制redo日志和数据页锁。 redo日志 redo日志即数据库的预写日志(WAL),有以下两个作用: 提高事务的提交速度。事务修改的数据页在磁盘上极有可能是不连续的,刷盘将会是随机IO,效率较差。事务会将所有对数据页的修改记录成redo日志,提交时只需保证这些redo日志刷...