通过上面的机制,保证了多个session并发往log buffer分配空间的时候,不会导致日志覆盖。
你可能会问:你怎么没有提到end of free space?
好,我们来说说这个end of free space什么时候会移动。
假如session 2的记录是一个commit record,那么它会触发lgwr写,lgwr刷新完日志后(我们的例子中,会把1,2两个buffer刷到磁盘),移动end of free space到3。
这个时候end of free space和start of free space在位置上是重合的