innodb有延迟块清除吗
begin
DML
....
sleep(N) -- 等待对应的脏数据和redo都刷新到磁盘,Q1: 此时脏数据行的trx_id是否被更新?
commit -- Q2:需不需要从磁盘把脏数据重新读取到buffer pool以更新其trx_id?
or
rollback -- Q3:需不需要从磁盘把脏数据重新读取到buffer pool以更新其trx_id和bit mask?
个人猜测:
脏数据被标记了新的trx_id刷新到磁盘,commit时无需二次读取,只有在rollback时才这样操作;比较rollback应该是比较少发生的,这样可以最大化处理效率,同时减少commit的延迟等待时间