📝 DBMS
116篇技术文档📅  最后修改于: 2020-12-12 07:32:51        🧑  作者: Mango
时间表从一个事务到另一个事务的一系列操作称为调度。它用于保留每个单独事务中的操作顺序。1.序列表串行调度是一种调度,其中一个事务在开始另一事务之前已完全执行。在串行计划中,当第一个事务完成其周期时,将执行下一个事务。例如:假设有两个事务T1和T2有一些操作。如果没有操作交织,则可能有以下两种结果:执行T1的所有操作,然后执行T2的所有操作。执行T1的所有操作,然后执行T2的所有操作。在给定的(a)...
📅  最后修改于: 2020-12-12 07:33:44        🧑  作者: Mango
可串行性测试序列化图用于测试计划的可序列化性。假设有一个计划S。对于S,我们构造一个称为优先级图的图。此图具有一对G =(V,E),其中V包含一组顶点,E包含一组边。顶点集用于包含计划中的所有事务。一组边用于包含所有满足以下三个条件之一的Ti-> Tj边:如果Ti在Tj执行读取(Q)之前执行写入(Q),则创建节点Ti→Tj。如果Ti在Tj执行写入(Q)之前执行Ti(读取)(Q),则创建节点Ti→T...
📅  最后修改于: 2020-12-12 07:34:37        🧑  作者: Mango
冲突可序列化时间表如果计划在交换无冲突的操作之后可以转换为串行计划,则该计划称为冲突可序列化性。如果该调度与串行调度冲突,则该调度将是可序列化的冲突。行动冲突如果所有条件都满足,则这两个操作将发生冲突:两者都属于单独的交易。它们具有相同的数据项。它们至少包含一个写操作。例:仅当S1和S2在逻辑上相等时才可以交换。在此,S1 = S2。这意味着它是非冲突的。在此,S1≠S2。这意味着这是冲突。冲突当...
📅  最后修改于: 2020-12-12 07:35:32        🧑  作者: Mango
查看可序列化如果时间表与序列时间表等效,则它将查看可序列化的时间表。如果时间表是可序列化的冲突,则它将是可序列化的视图。与可序列化不冲突的可序列化视图包含盲写。查看等效如果两个计划S1和S2满足以下条件,则它们被视为等效视图:1.初始读取两个时间表的初始读取必须相同。假设有两个时间表S1和S2。在计划S1中,如果事务T1正在读取数据项A,则在S2中,事务T1也应读取A。上面的两个时间表是等效的视图...
📅  最后修改于: 2020-12-12 07:40:55        🧑  作者: Mango
时间表的可恢复性有时由于软件问题,系统崩溃或硬件故障,交易可能无法完全执行。在这种情况下,失败的事务必须回滚。但是其他一些交易也可能使用了失败交易产生的价值。因此,我们还必须回滚这些事务。上表1显示了具有两个事务的时间表。 T1读取和写入A的值,并且T2读取和写入该值。 T2提交,但随后,T1失败。由于失败,我们必须回滚T1。 T2还应该回滚,因为它读取T1写入的值,但是T2无法回滚,因为它已经提...
📅  最后修改于: 2020-12-12 07:41:46        🧑  作者: Mango
失败分类为了找出问题发生的地方,我们将故障归纳为以下几类:交易失败系统崩溃磁盘故障1.交易失败事务失败发生在执行失败或到达无法继续执行的位置时。如果一些事务或流程受到损害,则称为事务失败。交易失败的原因可能是-逻辑错误:如果由于某些代码错误或内部错误条件而导致事务无法完成,则会发生逻辑错误。语法错误:发生在DBMS本身终止活动事务的地方,因为数据库系统无法执行该事务。例如,如果出现死锁或资源不可用...
📅  最后修改于: 2020-12-12 07:42:40        🧑  作者: Mango
基于日志的恢复日志是一系列记录。每个事务的日志都保存在某个稳定的存储中,以便在发生任何故障时都可以从那里恢复它。如果对数据库执行了任何操作,则它将记录在日志中。但是,应在将实际事务应用于数据库之前完成日志存储过程。假设有一笔交易可以修改一个学生的城市。将为此事务写入以下日志。启动事务时,它将写入“开始”日志。<Tn,开始><Tn,开始>当交易将城市从“诺伊达”修改为“班加罗尔”时,会将另一个日志写...
📅  最后修改于: 2020-12-12 07:43:31        🧑  作者: Mango
检查站检查点是一种机制,其中所有以前的日志都从系统中删除并永久存储在存储磁盘中。检查点就像书签。在执行事务时,将标记此类检查点,然后执行事务,然后使用事务步骤创建日志文件。当到达检查点时,该事务将被更新到数据库中,直到该点为止,整个日志文件将从该文件中删除。然后,使用新的事务步骤更新日志文件,直到下一个检查点,依此类推。该检查点用于声明一个点,在该点之前,DBMS处于一致状态,并且所有事务都已提交...
📅  最后修改于: 2020-12-12 07:44:23        🧑  作者: Mango
DBMS中的死锁死锁是指两个或多个事务无限期地等待对方放弃锁的情况。死锁被认为是DBMS中最令人担忧的并发症之一,因为没有任务完成并且永远处于等待状态。例如:在学生表中,事务T1在某些行上持有锁,并且需要更新成绩表中的某些行。同时,事务T2在成绩表中的某些行上保持锁定,并且需要更新事务T1所持有的Student表中的行。现在,出现了主要问题。现在,事务T1正在等待T2释放其锁定,并且类似地,事务T...
📅  最后修改于: 2020-12-12 07:45:15        🧑  作者: Mango
并发控制在并发控制中,可以同时执行多个事务。可能会影响交易结果。维护这些事务的执行顺序非常重要。并发控制问题当以不受控制的方式执行并发事务时,可能会出现一些问题。以下是并发控制中的三个问题。更新丢失脏读不可重复读1.丢失更新问题当两个访问同一数据库项的事务以某种方式使某些数据库项的值不正确的方式包含其操作时,就会发生丢失更新的问题。如果两个事务T1和T2读取了一条记录然后进行了更新,则第二条更新将...
📅  最后修改于: 2020-12-12 07:46:09        🧑  作者: Mango
基于锁的协议在这种类型的协议中,任何事务都必须先获得适当的锁,然后才能读取或写入数据。有两种类型的锁:1.共享锁:也称为只读锁。在共享锁中,数据项只能由事务读取。它可以在事务之间共享,因为当事务持有锁时,它就无法更新数据项上的数据。2.排他锁:在互斥锁中,数据项可以通过事务读取和写入。此锁是排他的,并且在此锁中,多个事务不会同时修改同一数据。有四种可用的锁定协议:1.简化锁协议这是在事务处理时锁定...
📅  最后修改于: 2020-12-12 07:47:00        🧑  作者: Mango
时间戳订购协议时间戳排序协议用于根据事务的时间戳对事务进行排序。事务的顺序不过是事务创建的升序。较旧事务的优先级较高,这就是它首先执行的原因。为了确定事务的时间戳,此协议使用系统时间或逻辑计数器。基于锁的协议用于在执行时管理事务之间冲突对之间的顺序。但是基于时间戳的协议在创建事务后立即开始工作。假设有两个事务T1和T2。假设事务T1在007次进入系统,事务T2在009次进入系统。 T1具有更高的优...
📅  最后修改于: 2020-12-12 07:47:51        🧑  作者: Mango
基于验证的协议验证阶段也称为乐观并发控制技术。在基于验证的协议中,交易在以下三个阶段执行:读取阶段:在此阶段,事务T被读取并执行。它用于读取各种数据项的值并将它们存储在临时局部变量中。它可以对临时变量执行所有写操作,而无需更新实际数据库。验证阶段:在此阶段,将根据实际数据验证临时变量值,以查看其是否违反了可序列化性。写入阶段:如果验证了事务验证,则将临时结果写入数据库或系统,否则回滚事务。这里每个...
📅  最后修改于: 2020-12-12 07:48:43        🧑  作者: Mango
托马斯写规则Thomas Write Rule为协议提供了可序列化顺序的保证。它改进了基本时间戳排序算法。Thomas的基本写入规则如下:如果TS(T)<R_TS(X),则事务T中止并回滚,并且操作被拒绝。如果TS(T)<W_TS(X),则不要执行事务的W_item(X)操作并继续处理。如果条件1和条件2均不发生,则允许事务Ti执行WRITE操作,并将W_TS(X)设置为TS(T)。如果我们使用托...
📅  最后修改于: 2020-12-12 07:49:36        🧑  作者: Mango
多重粒度让我们首先了解粒度的含义。粒度:它是允许锁定的数据项的大小。多重粒度:可以定义为按层次结构将数据库分解为可以锁定的块。多重粒度协议增强了并发性并减少了锁定开销。它保持对锁定内容和锁定方式的跟踪。可以轻松决定锁定数据项还是解锁数据项。这种层次结构可以图形化地表示为树。例如:考虑一棵具有四个节点级别的树。第一级或更高级别显示整个数据库。第二层代表类型区域的节点。更高级别的数据库正是由这些区域组...