老师好,我想问一下
第一个问题,redo log作为commit后先刷新到磁盘的日志,它的写入是如何保证原子性的?
我从网上看到,说redo是按block写的,与磁盘扇区一致都是512字节,目的是保证redo的原子性。那么请问,这个怎么理解。我一个事务里,可能执行了n个写操作,那么redo是将我的所有操作写在1个block的日志里,还是写n个block。如果是n个的话,刷新磁盘的动作我理解也不保证是原子操作了。
第二个问题,二进制日志是先于redo被记录到磁盘的,那么假如我先commit后,二进制日志刷新到磁盘,此时宕机。那么重启后,由于没有redo文件,数据没有被恢复,但是二进制日志已经记录了,这时候从服务器会不会就由于同步了二进制日志而造成数据不一致?