MySQL
文章平均质量分 95
Pan's pidr
这个作者很懒,什么都没留下…
展开
-
MySQL 三大日志:binlog、redo log 和 undo log 使用与原理
文章目录binlogbinlog日志格式binlog 使用场景binlog 刷盘时机查看 binlog 日志redo logredo log日志格式redo log使用场景redo log刷盘时机LSNredo log与binlog区别为什么 binlog 没有 crash-safe 能力两阶段提交怎么保证两份日志之间的逻辑一致组提交undo log事务提交undo log处理过程insert undo logupdate undo logpurge 线程的清理过程MySQL 崩溃恢复日志是mysql数原创 2021-09-17 16:44:28 · 825 阅读 · 0 评论 -
MySQL 事务管理
重点:begin/start transaction 命令并不是一个事务的起点,在执行到它们之后的第一个操作 InnoDB 表的语句,事务才真正启动。如果想要马上启动一个事务,可以使用 start transaction with consistent snapshot 这个命令。事务隔离级别根据读和提交的关系来分类的读未提交:一个事务还没提交时,它做的变更就能被别的事务看到;读提交:一个事务提交之后,能被其他事务看到;可重复读:一个事务执行过程中看到的数据,总是根这个事务在启动时看到的数据一致原创 2021-09-17 16:35:13 · 449 阅读 · 0 评论 -
MVCC (Multi-Version Concurrency Control 多版本的并发控制协议)
数据结构隐藏列InnoDB中每行数据都有两个隐藏列,一个保存了行的事务ID(DB_TRX_ID),一个保存了行的回滚指针(DB_ROLL_PT)。每开始一个新的事务,都会自动递增产生一个新的事务id。事务开始时刻的会把事务id放到当前事务影响的行事务id中,当查询时需要用当前事务id和每行记录的事务id进行比较。数据的历史版本就是不同事务修改数据的过程事务id,这个过程不一定是递增或者递减的基于undo log的版本链前面说到每行数据的隐藏列中包含了指向undo log的指针,而每条undo lo原创 2021-09-17 16:25:41 · 380 阅读 · 0 评论