缓冲日志和无缓冲日志的操作方式完全相同,区别在于何时将日志记录写入磁盘上。
缓冲日志和无缓冲日志都会捕获DDL和DML语句。
无缓冲日志的数据库中,只要事务提交,就会把包含该事务的物理日志buffer和逻辑日志buffer刷新到磁盘。
缓冲日志的数据库,在事务提交的时候,这些事务的信息将会保留在物理日志buffer和逻辑日志buffer中,直到这两个区域被填满或发生检查点才会刷新到磁盘。
有一个比较复杂的情况:
如果一个数据库实例中有多个数据库,其中一个是无缓冲日志,其他是缓冲日志。则物理日志buffer和逻辑日志buffer的刷新会优先根据无日志缓冲的数据库来。
无缓冲日志的优势:
当发生意外的时候,数据完整性和一致性都可以得到保障。
无缓冲日志的缺点:
缓冲区的刷新是根据当前事务的进度将整个缓冲区内容都写入逻辑日志中,所以逻辑日志的页面会有很多无用的数据。换言之,甚至逻辑日志缓冲中,没有提交的事务也会刷新到磁盘。
从这样的理解来看,在实际环境中,我们建议如下:
1、使用无日志缓冲的数据库;
2、物理日志buffer和逻辑日志buffer都要增大;
3、物理日志和逻辑日志所在的磁盘的IOPS要尽可能的大,越高越好。