设置事务隔离级别

若要设置事务隔离级别,应用程序可使用 SQL_ATTR_TXN_ISOLATION 连接属性。 如果数据源不支持请求的隔离级别,驱动程序或数据源可以设置更高的级别。 若要确定数据源支持的事务隔离级别和默认隔离级别,应用程序可分别使用 SQL_TXN_ISOLATION_OPTION 和 SQL_DEFAULT_TXN_ISOLATION 选项调用 SQLGetInfo

更高级别的事务隔离为数据库数据的完整性提供了最大的保护。 可序列化事务保证不受其他事务影响,因此保证能够保持数据库完整性。

但是,更高级别的事务隔离可能会导致性能降低,因为它会增加应用程序等待数据锁释放的可能性。 应用程序可以指定较低的隔离级别,以在以下情况下提高性能:

  • 当可以保证不存在可能会干扰应用程序事务的其他事务。 这种情况仅在有限的情况下发生,例如,当一家小型公司中的一个人在一台计算机上维护包含人员数据的 dBASE 文件并且不共享这些文件时。

  • 当速度比准确性更重要,并且任何错误都可能都是小型错误时。 例如,假设一家公司大多进行小型销售,很少进行大型销售。 估计所有未处理销售总价值的事务可能会安全地使用“读取未提交”隔离级别。 尽管事务将包括正在打开或已关闭和随后回滚的订单,但这些订单通常会相互取消,并且事务的处理速度会更快得多,因为每次遇到此类订单时都不会阻止该事务。

请参阅乐观并发以了解详细信息。