DBMS 中的可串行化2024年8月28日 | 阅读 8 分钟 大多数现代应用程序的支柱是 DBMS 的形式。当我们在正确设计形式时,它将为我们的应用程序提供高性能和相对的存储解决方案。在本主题中,我们将解释可串行化概念及其对 DBMS 的深远影响。我们还将通过一些示例理解可串行化的概念。最后,我们将通过一个关于可串行化重要性的示例来结束本主题。 DBMS 中的可串行化是什么?在计算机科学领域,可串行化是系统的一个属性,它描述了不同的进程如何操作共享数据。如果系统给出的结果与系统执行的操作相似,那么在这种情况下,我们称该系统是可串行化的。这里的系统协作意味着数据执行没有重叠。在 DBMS 中,当数据被写入或读取时,DBMS 可以阻止所有其他进程访问该数据。 在 MongoDB 开发者认证中,DBMS 使用各种锁定系统来允许其他进程在保持数据完整性的同时运行。在 MongoDB 中,可串行化最严格的级别是可以通过两阶段锁定或 2PL 来限制的。在锁定级别的第一阶段,在操作执行之前会锁定数据对象。当事务完成时,数据对象的锁将被释放。此过程保证操作没有冲突,并且所有事务都将数据库视为无冲突数据库。 两阶段锁定或 2PL 系统为数据库冲突提供了强大的保证。 它可以降低性能,然后增加获取和释放数据锁的开销。因此,系统允许约束可串行化以提高 DBMS 的性能。这确保最终结果与某些顺序执行相同,并改进了数据库中涉及的操作。 因此,可串行化是系统的一个属性,它描述了不同的进程如何操作共享数据。在 DBMS 中,通过在其他进程执行期间锁定数据来采用整体可串行化属性。此外,可串行化确保最终结果等同于数据的顺序操作。 什么是可串行化调度?
可串行化类型在 DBMS 中,所有事务都应按特定顺序排列,即使所有事务都是并发的。如果所有事务都不可串行化,则会产生不正确的结果。 在 DBMS 中,有不同类型的可串行化。每种可串行化类型都有其优点和缺点。最常见的两种可串行化类型是视图可串行化和冲突可串行化。 1. 冲突可串行化冲突可串行化是可串行化中一种冲突操作,它操作相同的数据项,这些数据项应按特定顺序执行并保持数据库的一致性。在 DBMS 中,每个事务都有其唯一的值,并且数据库中的每个事务都基于该唯一值。 此唯一值可确保没有两个具有相同冲突值的操作被并发执行。例如,让我们考虑两个示例,即订单表和客户表。一个客户可以有多个订单,但每个订单只属于一个客户。数据库的冲突可串行化有一些条件。它们如下。
如果有两个并发执行的事务,一个操作将添加第一个客户的事务,另一个操作将由第二个操作添加。此过程确保数据库不会出现不一致。 2. 视图可串行化视图可串行化是可串行化中一种操作,其中每个事务都应产生一些结果,而这些结果是数据项正确顺序执行的输出。与冲突可串行化不同,视图可串行化侧重于防止数据库不一致。在 DBMS 中,视图可串行化允许用户以冲突的方式查看数据库。 在 DBMS 中,我们应该理解调度 S1 和 S2 以更好地理解视图可串行化。这两个调度应在两个事务 T1 和 T2 的帮助下创建。为了保持事务的等效性,每个调度都必须遵循三个事务。这三个条件如下。
使用示例在 DBMS 中测试可串行化可串行化是 DBMS 的一种属性,其中每个事务都独立且自动地执行,即使这些事务是并发执行的。换句话说,我们可以说,如果有多个事务并发执行,那么可串行化函数的主要工作就是将这些多个事务按顺序排列。 为了更好地理解,让我们通过一个例子来解释。假设有两个用户 Sona 和 Archita。每个人执行两个事务。假设事务 T1 和 T2 由 Sona 执行,T3 和 T4 由 Archita 执行。假设事务 T1 读取和写入数据项 A,事务 T2 读取数据项 B,事务 T3 读取和写入数据项 C,事务 T4 读取数据项 D。让我们按如下方式调度上述事务。 让我们首先讨论为什么这些事务不可串行化。 为了使调度被视为可串行化,它必须首先满足冲突可串行化属性。在上面的示例调度中,请注意,事务 1 (T1) 和事务 2 (T2) 在写入数据项 B 之前都读取了它。这会在 T1 和 T2 之间造成冲突,因为它们都在尝试并发地读取和写入同一数据项。因此,给定的调度与可串行化不冲突。 然而,还有另一种可串行化称为视图可串行化,我们的示例满足它。视图可串行化要求,如果两个事务看不到彼此的更新(即,一个事务看不到另一个并发事务的效果),则该调度被视为视图可串行化。在我们的示例中,事务 2 (T2) 无法看到事务 4 (T4) 所做的任何更新,因为它们没有共享公共数据项。因此,该调度被视为可串行化的。 需要注意的是,冲突可串行化比视图可串行化更强大,因为它要求在进行任何更新之前解决所有潜在冲突(即,每个事务必须在任何其他事务可以写入它之前读取或写入每个数据项)。视图可串行化仅要求,如果两个事务看不到彼此的更新,则该调度是视图可串行化的,无论它们之间是否存在潜在冲突。 总而言之,这两种属性对于确保数据库管理系统中并发事务的正确性都是必需的。 DBMS 中可串行化的好处以下是使用数据库中可串行化的好处。
结论DBMS 事务必须遵循 ACID 属性才能被视为可串行化。DBMS 中有不同类型的可串行化,每种都有其优点和缺点。在大多数情况下,选择正确的可串行化类型将取决于性能和正确性之间的权衡。 选择错误的可串行化类型可能会导致数据库中出现难以调试和修复的错误。希望本指南能帮助您更好地理解 DBMS 中的可串行化是如何工作的以及存在哪些类型的可串行化。 下一主题DBMS 中的 1 层架构 |
我们请求您订阅我们的新闻通讯以获取最新更新。