并发

并发是指多个用户能够同时访问数据。当数据库引擎所能支持的并发操作数较大时,数据库并发程度就会增大。在 Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) 中,并发控制是通过用锁来帮助保护数据而实现的。锁控制着多个用户如何同时访问和更改共享数据而不会彼此冲突。有关详细信息,请参阅锁定 (SQL Server Compact Edition)

并发问题

如果您不对多个用户修改和读取数据的情况进行管理,就会出现并发问题。例如,如果多个用户同时访问某个数据库,这些用户的事务就可能会同时对同一数据执行操作。下面列出了使用 SQL Server Compact Edition 时可能出现的一些并发问题:

  • 更新丢失。
    当两个或更多个事务选择同一行,然后根据原来选择的值更新行时,就会出现更新丢失的问题。最后一次更新会覆盖其他事务所做的更新,从而导致数据丢失。
  • 不一致分析(不可重复读)。
    当另一个事务多次访问同一行且每次读取不同数据时,就会出现不可重复读问题。这涉及到多次读取同一行的问题。每次进行读取时,信息已被其他事务更改。
  • 幻读。
    当对属于某事务正在读取的行范围内的行执行插入或删除操作时,就会出现幻读的问题。由于其他事务的删除操作,使事务第一次读取行范围时存在的行在后续读取时已不存在。与此类似,由于其他事务的插入操作,后续读取时会显示原来读取时并不存在的行。
注意:
还有一个常见的并发问题即未提交的相关性(脏读),SQL Server Compact Edition 之前未发生过此类问题。当一个事务选择另一个事务正在更新的行时,就会出现此问题。第二个事务正在读取的是尚未提交、并可能被更新行的事务更改的数据。在使用 Microsoft SQL Server 2005 时将出现脏读。有关并发问题的详细信息,请参阅 SQL Server 联机丛书中的“Concurrency Effects”。

并发控制

在数据库方案中,有两种并发控制机制:

  • 乐观并发控制
    乐观并发控制假定多个用户之间不可能有资源冲突,因此它允许事务在执行时不锁定任何资源。只有当事务试图更改数据时,才会对资源进行检查。此时将确定是否存在冲突(例如通过检查版本号)。如果出现冲突,应用程序必须读取数据并再次尝试进行更改。乐观并发控制未与产品一起提供,但您可以通过跟踪数据库访问,以手动方式将其编入应用程序中。
  • 悲观并发控制
    悲观并发控制将在事务过程中根据需要锁定资源。SQL Server Compact Edition 支持在事务过程中根据需要锁定资源的悲观并发控制。

有关乐观并发控制和悲观并发控制的详细信息,请参阅 SQL Server 联机丛书中的“Types of Concurrency Control”。

请参阅

概念

事务 (SQL Server Compact Edition)
锁定 (SQL Server Compact Edition)
多用户访问

帮助和信息

获取 SQL Server Compact Edition 帮助