数据库
事务失败
-
计算机故障:在事务执行过程中,计算机系统中发生硬件或软件错误。如果硬件崩溃,计算机内存的内容可能会丢失。
-
事务错误:事务中的某些作可能会导致其失败,例如整数溢出或除以零。事务失败也可能由于参数值错误或逻辑编程错误而发生。此外,用户可能会在事务执行过程中中断交易。
-
事务检测到的本地错误或异常情况:某些条件需要取消事务。例如,可能找不到事务数据。
-
并发控制执行:并发控制方法可能会决定中止事务,稍后重新启动,因为它违反了可序列化性,或者因为多个事务处于死锁状态。
-
磁盘故障:某些磁盘块可能会因为读写故障或磁盘读/写头崩溃而丢失数据。这可能发生在事务的读取或写入作期间。
-
物理问题:这是指无穷无尽的问题,包括电源或空调故障、火灾、盗窃、覆盖磁盘
失败的原因中,1-4比5,6更常见,当发生类型 1-4故障时,系统必须保留足够的信息以快速从故障中恢复。
回滚
-
概念:指在事务执行过程中,由于某些原因(如操作失败、违反约束、系统异常或人为干预),撤销当前事务已执行的所有操作,使数据库恢复到事务开始之前的状态。
-
不可回滚:无法回滚具有脏读问题的已提交事务
级联回滚
-
定义:指在并发事务执行过程中,如果一个事务因为某种原因(如违反约束、死锁等)被回滚,而该事务所做的修改已经被其他未提交的事务读取或依赖,那么这些依赖的事务也必须回滚,以保证数据库的一致性。
-
例子:假设有两个事务T1和T2,T1修改了某条数据并未提交,T2读取了T1修改的数据并进行了进一步操作。如果T1因为某种原因回滚了,那么T2也必须回滚,因为它依赖了T1的未提交数据
-
影响:级联回滚会导致多个事务被连锁回滚,影响系统性能和并发性。为避免级联回滚,数据库可以采用严格调度或可恢复调度。
级联时间表
-
定义:指允许事务读取其他未提交事务的数据的调度方式。这种调度方式可能导致级联回滚
-
特点:在级联时间表中,事务可以读取其他事务尚未提交的数据(即“脏读”);如果前面的事务回滚,后面依赖它的事务也必须回滚
严格时间表
-
定义:严格时间表是一种调度方式,要求事务只能读取和修改已经提交的数据,不能读取未提交的数据
-
特点:可以完全避免级联回滚;只有当前一个事务提交后,后一个事务才能读取或修改它的数据;保证了事务的隔离性和一致性
锁
-
定义:是一种用于控制并发访问共享资源的机制。它的主要作用是保证在并发环境下数*据的正确性和一致性
-
排它锁:加锁后,其他操作不能再读写该资源,保证写操作的独占性
-
共享锁:加锁后,其他操作可以继续读,但不能写,保证读操作的并发性
-
意向锁:根据锁的粒度和用途进一步细分
工作流程:
-
当一个事务需要操作某条数据时,会先申请锁。
-
如果锁可用,则获得锁,进行操作。
-
操作完成后释放锁,其他事务才能继续操作该数据。
-
通过锁机制,可以防止多个事务同时修改同一数据,避免数据不一致
297

被折叠的 条评论
为什么被折叠?



