主要内容:多粒度,意图模式锁定本节将从理解粒度的含义开始学习。 粒度: 它是允许锁定的数据项的大小。 多粒度 它可以定义为将数据库分层分解为可以锁定的块。 多粒度协议增强了并发性并减少了锁定开销。 它保留了锁定内容和锁定方式的轨迹。 可以轻松决定锁定数据项还是解锁数据项。这种类型的层次结构可以图形方式表示为树。 示例: 考虑一个具有四级节点的树。 第一级或更高级别显示整个数据库。 第二级表示类型区域的节点。 更高级别的数据库恰
验证阶段也称为乐观并发控制技术。 在基于验证的协议中,事务在以下三个阶段中执行: 读阶段 :在此阶段,读取并执行事务T。它用于读取各种数据项的值并将它们存储在临时局部变量中。 它可以对临时变量执行所有写操作,而无需更新实际数据库。 验证阶段 :在此阶段,将根据实际数据验证临时变量值,以查看它是否违反了可串行性。 写入阶段 :如果验证了事务的验证,则将临时结果写入数据库或系统,否则将回滚事务。 这里
DBMS时间戳顺序协议- 时间戳顺序协议用于根据事务的时间戳对事务进行排序。 事务顺序只不过是事务创建的升序。 旧事务的优先级高于它首先执行的原因。 要确定事务的时间戳,此协议使用系统时间或逻辑计数器。 基于锁的协议用于在执行时管理事务之间的冲突对之间的顺序。 但是,基于时间戳的协议会在创建事务后立即开始工作。 假设有两个事务T1和T2。 假设事务T1已经以007次进入系统并且事务T2已经以009
在这种类型的协议中,任何事务在获取适当的锁之前都无法读取或写入数据。 锁有两种类型: 1.共享锁: 它也称为只读锁。 在共享锁中,数据项只能由事务读取。 它可以在事务之间共享,因为当事务持有锁时,它无法更新数据项上的数据。 2.独占锁: 在独占锁中,数据项既可以是读取,也可以是事务写入。 这种锁是独占的,在此锁中,多个事务不会同时修改相同的数据。 有四种类型的锁定协议可用: 1. 简单的锁定协议
主要内容:并发控制的问题在并发控制中,可以同时执行多个事务。 它可能会影响事务结果。保持这些事务的执行顺序非常重要。 并发控制的问题 并发事务以不受控制的方式执行时可能会出现几个问题。 以下是并发控制中的三个问题。 更新丢失 脏读 不可重复读取 1. 更新丢失 当访问相同数据库项的两个事务包含其操作时,某些数据库项的值不正确,则会发生丢失的更新问题。 如果两个事务T1和T2读取记录然后更新它,那么第二个更新将覆盖更新第一
主要内容:死锁避免,死锁检测,等待图,死锁预防,等待模式,创伤等待模式死锁是两个或多个事务无限期地等待彼此放弃锁定的情况。 死锁被认为是DBMS中最令人恐惧的并发症之一,因为任务都没有完成,并且永远处于等待状态。 例如: 在表中,事务T1对某些行进行锁定,需要更新表中的某些行。 同时,事务T2在等级表中的某些行上保持锁定,并且需要更新事务T1持有的表中的行。 现在,出现了问题。事务T1正在等待T2释放其锁定,同样,事务T2正在等待T1释放其锁定。 所有活动都陷入停顿
主要内容:使用检查点恢复检查点(checkpoint)是一种机制,其中所有先前的日志都从系统中删除并永久存储在存储磁盘中。 检查点就像一个书签。 在执行事务时,标记此类检查点,然后使用事务的步骤执行事务,将创建日志文件。 当它到达检查点时,事务将更新到数据库中,直到那时,整个日志文件将从文件中删除。 然后使用新的事务步骤更新日志文件,直到下一个检查点,依此类推。 检查点用于声明DBMS处于一致状态之前的一个点,并且所有事
主要内容:使用日志记录恢复DBMS基于日志的恢复 - 日志是一系列记录。 每个事务的日志都保存在一些稳定的存储中,以便在发生任何故障时,可以从那里恢复。 如果对数据库执行任何操作,则它将记录在日志中。 但是,应该在数据库中应用实际事务之前完成存储日志的过程。 假设有一项事务,它执行修改学生所在的城市。 为此事务编写以下日志。 启动事务时,它会写入“启动”日志。 当事务城市从“Haikou”修改为“Shanghai”时,则会
主要内容:1. 事务失败,2. 系统崩溃,3.磁盘故障要找到问题发生的位置,我们将故障(失败)归纳为以下类别: 事务失败 系统崩溃 磁盘故障 1. 事务失败 当事务无法执行或者它到达无法继续执行的点时发生事务失败。 如果一些事务或进程受到损害,那么这称为事务失败。 事务失败的原因可能是 - 逻辑错误:如果由于某些代码错误或内部错误情况导致事务无法完成,则会发生逻辑错误。 语法错误:它发生在DBMS本身终止活动事务的位置,因为数据库系统无法执行它。 例
主要内容:查看等效如果视图相当于一个串行调度,那么视图将序列化。 如果调度是冲突可序列化的,那么它将是可序列化的。 可序列化的视图可序列化包含盲写。 查看等效 如果满足以下条件,则两个调度S1和调度S2被视为等效视图: 1. 初始读取 两个调度的初始读数必须相同。 假设有两个调度S1和S2。 在调度S1中,如果事务T1正在读取数据项A,则在S2中,事务T1也应该读取A。 以上两个调度表是等效视图,因为S1中的初始读
主要内容:冲突操作,冲突等效如果不冲突的业务交换后,它可以转变成串行调度,调度被称为冲突串行化调度。 此调度将是一个序列化的冲突,如果它是相当于冲突的串行调度。 冲突操作 如果所有条件满足,则这两个操作会发生冲突: 两者都属于单独的事务。 它们具有相同的数据项。 它们至少包含一个写操作。 示例: 仅当和在逻辑上相等时才可以进行交换。 这里,。 这意味着它是非冲突的。 冲突等效 在冲突等效中,可以通过交换非冲突操作将其转换为另
序列化图用于测试计划的可序列化。 假设一个时间表S,对于S,我们构造一个称为优先图的图。 该图有一对,其中由一组顶点组成,由一组边组成。 顶点集用于包含参与计划的所有事务。 该组边用于包含三个条件之一所有的所有边: 如果在执行读取(Q)之前执行写入(Q),则创建节点。 如果在执行写入(Q)之前执行读取(Q),则创建节点。 如果在执行写入(Q)之前执行写入(Q),则创建节点。 调度S的优先顺序图:
主要内容:1. 串行调度,2. 非串行调度从一个事务到另一个事务的一系列操作称为调度。 它用于保存每个单独事务中的操作顺序。 1. 串行调度 串行调度是一种调度,其中一个事务在开始另一个事务之前完全执行。 在串行调度中,当第一个事务完成其循环时,则执行下一个事务。 例如: 假设有两个事务和有一些操作。 如果它没有交错操作,那么有以下两种可能的结果: 执行的所有操作,然后执行的所有操作。 在给定的(b)图中,调度A显示了序列调度,其中之后跟
在数据库中,事务可以处于以下状态之一 - 1. 活动状态 活动状态是每个事务的第一个状态。 在此状态下,正在执行事务。 例如: 在此处完成插入或删除或更新记录。 但是所有记录仍未保存到数据库中。 2. 部分提交 在部分提交状态下,事务执行其最终操作,但数据仍未保存到数据库中。 在总标记计算示例中,在该状态下执行总标记步骤的最终显示。 3. 提交 如果事务成功执行所有操作,则称该事务处于已提交状态。
主要内容:1. 原子性,2. 一致性,3. 隔离性,4. 持久性事务具有四个属性,这些用于在事务之前和之后维护数据库的一致性。 事务属性 原子性(Atomicity) 一致性(Consistency) 隔离性(Isolation) 持久性(Durability) 1. 原子性 它声明事务的所有操作如有一个发生失败,则事务中止。 事务没有中途,即事务不能部分发生。 每个事务都被视为一个单元,并且运行完成或根本不执行。 原子性涉及以下两个操作: 中止: 如果事务中