最近在看了很多关于Mysql的InnoDB引擎中MVCC的相关知识点, 看了好多相关资料, 也大概知道了undo-log的作用, 但是好像没有能解决如下这些疑问
- 很多资料说 "事务中insert操作的undo log提交后就删除undo log", 问题是:那干脆insert不生成undo log不就行了,生成出来给谁用?
- 事务生成undo log的时间点到底在哪里? 是事务开始第一个操作(select/update/insert/delete)都会生成undo-log? 还是事务中的每个操作都会生成undo-log?
如果是前者, 那事务中操作不同行的数据, 只有第一次操作会生成undo-log可就不行了;
如果是后者, 那事务中可能selet一行, 之后又update这行数据, 那岂不是生成相同的undo-log记录了, 感觉没必要;
还是? 在事务中每第一次操作一数据行, 就生成undo-log?
- 不同事务在修改同一行数据的时候, 如果都生成undo-log,那就有了多个相同的undo-log,是这样么? 最后事务提交时, 将undo-log往history list上放的时候undo-log会重复么?
终于搞明白了