鍍金池/ 問答/數(shù)據(jù)庫/ Mysql Innodb存儲引擎下mvcc的undo log問題?

Mysql Innodb存儲引擎下mvcc的undo log問題?

最近在看了很多關(guān)于Mysql的InnoDB引擎中MVCC的相關(guān)知識點, 看了好多相關(guān)資料, 也大概知道了undo-log的作用, 但是好像沒有能解決如下這些疑問

  1. 很多資料說 "事務(wù)中insert操作的undo log提交后就刪除undo log", 問題是:那干脆insert不生成undo log不就行了,生成出來給誰用?
  2. 事務(wù)生成undo log的時間點到底在哪里? 是事務(wù)開始第一個操作(select/update/insert/delete)都會生成undo-log? 還是事務(wù)中的每個操作都會生成undo-log?

    如果是前者, 那事務(wù)中操作不同行的數(shù)據(jù), 只有第一次操作會生成undo-log可就不行了;

    如果是后者, 那事務(wù)中可能selet一行, 之后又update這行數(shù)據(jù), 那豈不是生成相同的undo-log記錄了, 感覺沒必要;

    還是? 在事務(wù)中每第一次操作一數(shù)據(jù)行, 就生成undo-log?

  1. 不同事務(wù)在修改同一行數(shù)據(jù)的時候, 如果都生成undo-log,那就有了多個相同的undo-log,是這樣么? 最后事務(wù)提交時, 將undo-log往history list上放的時候undo-log會重復(fù)么?
回答
編輯回答
別硬撐

終于搞明白了

2017年7月31日 16:34