1. rollback日志文件(tokudb.rollback)

    接下来就简单唠唠这两类文件的内部细节。

    1) redo-log

    记录的不是页而是对Fractal-Tree索引的操作日志。 log格式:

    content里记录的是具体的日志内容,比如insert操作,content就是:

    为了确保log的安全性,redo-log也支持从后往前解析。

    当一个log的MAX_LSN小于已完成checkpoint的LSN时,就表明这个log文件可以安全删除了。

    那么问题来了:

    如果用户执行了一个“大事务”,比如delete一个大表,耗时很长,log文件岂不是非常多,一直等到事务提交再做清理?

    2) tokudb.rollback

    用户的事务操作(insert/delete/update写操作)都会写一条日志到tokudb.rollback,存储的格式是:

    记录日志伪码如下:

    如果是事务,每个操作会写2条日志(1条redo,1条rollback)。

    tokudb.rollback可以看做是一个事务的undo日志,记录的是的关系映射。