编辑
2023-10-30
数据库理论基础
00
请注意,本文编写于 558 天前,最后修改于 558 天前,其中某些信息可能已经过时。

目录

Index
Failure Classification
ransaction Failures
System Failures
Storage Media Failures
Buffer Pool Policies

Index

  • Failure Classification
  • Buffer Pool Policies
  • Shadow Paging
  • Write-Ahead Log
  • Logging Schemes
  • Checkpoints

Failure Classification

世上并不存在能够容忍任何故障的容错机制,即便做了异地多活,一次小行星撞地球也能将你的系统一举歼灭,因此在讨论故障恢复之前,我们必须先为故障分类,明确需要容忍的故障类型。 一般故障类型可以分为 3 种:

  • 事务故障 (Transaction Failures)
  • 系统故障 (System Failures)
  • 存储介质故障 (Storage Media Failures)

ransaction Failures

事务故障可以分为两种:

  • 逻辑错误 (Logical Errors):由于一些内部约束,如数据一致性约束,导致事务无法正常完成
  • 内部错误 (Internal State Errors):由于数据库内部调度、并发控制,如死锁,导致事务无法正常提交

System Failures

系统故障可以分为两种:

  • 软件故障 (Software Failure):如 DBMS 本身的实现问题 (NPE, Divide-by-zero)
  • 硬件故障 (Hardware Failure):DBMS 所在的宿主机发生崩溃,如断电。且一般假设非易失性的存储数据在宿主机崩溃后不会丢失

Storage Media Failures

如果存储介质发生故障,通常这样的故障就是无法修复的,如发生撞击导致磁盘部分或全部受损。所有数据库都无法从这种故障中恢复,这时候数据库只能从归档的备份记录中恢复数据。

Buffer Pool Policies

修改数据时,DBMS 需要先把对应的数据页从持久化存储中读到内存中,然后在内存中根据写请求修改数据,最后将修改后的数据写回到持久化存储。在

整个过程中,DBMS 需要保证两点: DBMS 告知用户事务已经提交成功前,相应的数据必须已经持久化 如果事务中止,任何数据修改都不应该持久化 如果真的遇上事务故障或者系统故障,DBMS 有两种基本思路来恢复数据一致性,向用户提供上述两方面保证:

  • Undo:将中止或未完成的事务中已经执行的操作回退
  • Redo:将提交的事务执行的操作重做

DBMS 如何支持 undo/redo 取决于它如何管理 buffer pool。我们可以从两个角度来分析 buffer pool 的管理策略:Steal Policy 和 Force Policy。

原文链接

https://www.jianshu.com/p/646961b93c7e

https://zhuanlan.zhihu.com/p/35841956

https://help.aliyun.com/zh/polardb/polardb-for-mysql/innodb-physiological-logging

本文作者:yowayimono

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!