我们知道串行调度永远不会使数据库处于不一致状态,因为没有并发事务执行。然而,非串行调度可能会使数据库处于不一致的状态,因为有多个事务同时运行。通过检查给定的非串行调度是否可以串行化,我们确保它是一致的调度。
您可能想知道,不是检查非串行调度是否可以串行化,我们不能一直拥有串行调度吗?答案是否定的,因为并发事务执行充分利用了系统资源,并且与绘制调度相比要快得多。
让我们学习如何检查两个计划是否
初始读取:事务中每个数据项的初始读取必须与两个计划匹配。例如,如果事务 T1 在调度 S1 中先于事务 T2 读取项目 X 数据,则在调度 S2 中,T1 必须 购买电话营销通话清单 在 T2 之前读取 X。
阅读与初始阅读:您可能会对术语初始阅读感到困惑。这里的初始读取是指对数据项的第一次读取操作,例如数据项X可以在一个调度中读取多次,但对X的第一次读取操作称为初始读取。当我们在同一篇文章的下一部分中获得示例后,这一点将会变得更加清楚。
最终写入每个数据项的最终写入操
例如,最后一个数据项 X 是由事务 T1 在调度 S1 中写入的,那么在 S2 中,X 上的最后一个写入操作应该由事务 T1 执行。
3.更新读取:如果在调度S1中,事务T1读 电话号码 取了T2更新的数据项,那么在调度S2中,T1必须读取T2对同一数据项执行写入操作之后的值。例如,在调度 S1 中,T2 对 X 执行写入操作后,T1 对 X 执行读取操作,然后在 S2 上,T2 对 X 执行写入操作后,T1 必须读取 X。