当处理单用户数据库中的数据时,用户可以随意修改数据库中的数据,而不必担心会有其他用户在同一时间修改相同的数据。但是,在一个多用户数据库中,很可能出现多个用户同时访问和修改数据的情况。数据一致性不可或缺的,三种方式管理数据一致性:
- 悲观一致性控制。对于这种类型的一致性控制,在从行刚刚被提取出来知道在数据库中被修改这段时间内,会一直为用户锁定行。这种类型的一致性控制在大量用户需要同时访问一行时用到。然而,悲观一致性控制不能用于分布式结构中,因为锁不能被长期保持。
- 乐观一致性控制。对于这种类型的一致性控制,行只在真正被修改时为用户锁定。这种类型的一致性控制检查一个数据库中的行确定是否对行进行了任何修改。如果一行在被读取以来已经被修改过,那么任何对这个行的修改尝试都会违反一致性原则。
- 最后赢取控制(Last in Wins)。在这种类型的一致性控制中,同乐观一致性控制一样,只在真正修改行期间对用户锁定。但控制不检查是否对原始行进行了任何更新。