当前位置: 首页 > 教程 > 数据库管理系统 >

DBMS死锁

精华
小牛编辑
233浏览
2023-03-14

死锁是两个或多个事务无限期地等待彼此放弃锁定的情况。 死锁被认为是DBMS中最令人恐惧的并发症之一,因为任务都没有完成,并且永远处于等待状态。

例如:student表中,事务T1对某些行进行锁定,需要更新grade表中的某些行。 同时,事务T2在等级表中的某些行上保持锁定,并且需要更新事务T1持有的Student表中的行。

现在,出现了问题。事务T1正在等待T2释放其锁定,同样,事务T2正在等待T1释放其锁定。 所有活动都陷入停顿状态并保持停滞状态。 它将保持静止状态,直到DBMS检测到死锁并中止其中一个事务。

死锁避免

当数据库陷入死锁状态时,最好避免使用数据库而不是中止或重新启动数据库。 这是浪费时间和资源。
死锁避免机制用于预先检测任何死锁情况。 像“等待图”这样的方法用于检测死锁情况,但该方法仅适用于较小的数据库。 对于较大的数据库,可以使用死锁预防方法。

死锁检测

在数据库中,当事务无限期地等待获取锁时,DBMS应检测事务是否涉及死锁。 锁管理器维护等待图以检测数据库中的死锁循环。

等待图

  • 这是用于死锁检测的合适方法。 在此方法中,将根据事务及其锁定创建图。 如果创建的图具有循环或闭环,则存在死锁。
  • 对于等待其他人持有的某些数据的每个事务,系统维护等待图。 如果图中有任何循环,系统将继续检查图。

等待上述场景的图如下所示:

死锁预防

死锁防止方法适用于大型数据库。 如果以永远不会发生死锁的方式分配资源,则可以防止死锁。
数据库管理系统分析事务的操作是否可以创建死锁情况。 如果他们这样做,那么DBMS从不允许执行该事务。

等待模式

在此模式中,如果事务请求已由另一个事务保持冲突锁定的资源,则DBMS只检查两个事务的时间戳。 它允许旧事务等待资源可用于执行。

假设存在两个事务Ti和Tj,并且让TS(T)是任何事务T的时间戳。如果T2通过某个其他事务持有锁并且T1请求T2持有的资源,则DBMS执行以下操作:

  • 检查TS(Ti)<TS(Tj) - 如果Ti是较旧的事务并且Tj保留了一些资源,则允许Ti等待直到数据项可用于执行。这意味着如果较旧的事务正在等待由较年轻的事务锁定的资源,则允许较旧的事务等待资源直到它可用。
  • 检查TS(Ti)<TS(Tj) - 如果Ti是较旧的事务并且保留了一些资源并且如果Tj正在等待它,则Tj被杀死并且随后以随机延迟但具有相同时间戳重新启动。

创伤等待模式

  • 在创伤等待方案中,如果较旧的事务请求由较新的事务持有的资源,则较旧的事务迫使较新的事务杀死该事务并释放该资源。 在分钟延迟之后,重新启动较新的事务但具有相同的时间戳。
  • 如果旧事务持有较新事务请求的资源,则要求较新的事务等到较早发布它。

最后更新:

类似资料

  • 主要内容:键类型:键 键在关系数据库中发挥的重要作用。 它用于唯一标识表中的记录或数据行。 它还用于建立和识别表之间的关系。 例如:在学生表中,ID用作键,因为它对每个学生都是唯一的。 在PERSON表中,,,SSN是键,因为它们对每个人都是唯一的。 键类型: 1. 主键(Primary key) 它是第一个用于唯一标识实体的一个且仅一个实例的键。 正如在表中看到的那样,实体可以包含多个键。 从这些列表中最合适的键

  • 在庞大的数据库结构中,搜索所有索引值并达到所需数据的效率非常低。 哈希技术用于计算磁盘上数据记录的直接位置,而不使用索引结构。 在该技术中,数据存储在通过使用哈希函数生成其地址的数据块中。 存储这些记录的存储器位置称为数据桶或数据块。 在此,哈希函数可以选择任何列值来生成地址。 大多数情况下,哈希函数使用主键来生成数据块的地址。 哈希函数是任何复杂数学函数的简单数学函数。 甚至可以将主键本身视为数

  • 主要内容:B+树的结构,在B+树中搜索记录,B+树插入,B+树删除B+树 是一个平衡的二叉搜索树,它遵循多级索引格式。 在B+树中,叶节点表示实际的数据指针,B+树确保所有叶节点保持在相同的高度。 在B+树中,叶节点使用链表链接,因此,B+树可以支持随机访问以及顺序访问。 B+树的结构 在B+树中,每个叶节点与根节点的距离相等。B+树的顺序为,其中对于每个树是固定的。 它包含内部节点和叶节点。 内部节点 B+树的内部节点可以包含除根节点之外的至少 n/2 个记录

  • 在DBMS中索引 - 索引用于通过最小化处理查询时所需的磁盘访问次数来优化数据库的性能。 索引是一种数据结构。它用于快速定位和访问数据库表中的数据。 索引结构 可以使用某些数据库列创建索引。 数据库的第一列是搜索键,它包含表的主键或候选键的副本。主键的值按排序顺序存储,以便可以轻松访问相应的数据。 数据库的第二列是数据引用。 它包含一组指针,用于保存磁盘块的地址,可以在其中找到特定键的值。 索引方

  • 事务是一组逻辑相关的操作,它包含一组任务。 事务是一个动作或一系列动作,它由单个用户执行以执行访问数据库内容的操作。 示例: 假设银行员工从的帐户向的帐户转账元,这个小事务包含几个低级任务: X 的帐户 Y 的帐户 事务操作: 以下是交易的主要操作: 读(X):读操作用于从数据库中读取X 的值并将其存储在主存储器的缓冲区中。 写(X):写操作用于将值从缓冲区写回数据库。 举一个例子来从一个帐户中扣

  • 在聚合中,两个实体之间的关系被视为单个实体。 在聚合中,与其对应实体的关系被聚合到更高级别的实体中。 例如:中心(Center)实体提供课程(Course)实体充当关系中的单个实体,该实体与另一个实体访问者处于关系中。 在现实世界中,如果访问者访问教练中心,那么他将永远不会询问有关课程或只是关于中心,而是他会询问有关两者的询问。