文章目录
- 1. 前言
- 2. 容错
- 2.1 缓存(Caching)
- 2.2 数据损坏(Data Corruption)
1. 前言
本文将详细讲解影响
2. 容错
不言而喻,预写式日志必须保证在任何情况下都能恢复崩溃(除非持久性存储本身被破坏)。影响数据一致性的因素有很多,但我将只讨论最重要的几个:缓存、数据损坏和非原子写。
2.1 缓存(Caching)
在到达非易失性存储(如硬盘)之前,数据可以通过各种缓存。
磁盘写入只是指示操作系统将数据放入其缓存(这也容易崩溃,就像RAM的任何其他部分一样)。实际的写入操作是异步执行的,这是由操作系统的I/O调度器的设置定义的。
一旦调度器决定刷新累积的数据,这些数据就会被移动到存储设备(如HDD)的缓存中。存储设备也可以延迟写入,例如,将相邻的页面组合在一起。RAID控制器在磁盘和操作系统之间增加了一个缓存级别。
除非采取特殊措施,否则数据何时可靠地存储在磁盘上仍然是未知的。这通常不是很重要,因为我们有WAL&#