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

Mysql Innodb存儲(chǔ)引擎下mvcc的undo log問(wèn)題?

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

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

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

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

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

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

終于搞明白了

2017年7月31日 16:34