Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
各个隔离级别分别适用于特定类型的任务。以下信息可以帮助您确定各个特定操作最适合使用哪个级别。
涉及浏览或输入数据的事务可能需要几分钟时间才能完成,并且需要读取大量行。如果使用隔离级别 2 或 3,可能会降低并发性。对于这类事务,通常使用隔离级别 0 或 1。
例如,对于需要从数据库中读取大量信息以生成统计摘要的决策支持应用程序,即使读取到的几行数据以后被修改,可能也不会对其产生很大影响。如果要求这样的应用程序使用较高的隔离级别,它可能会在大量数据上获取读锁定,从而导致其它应用程序无法写入数据。
隔离级别 1 适合与游标一起使用,因为这种组合既可以确保游标稳定性,又不会大幅提高锁定需求。SQL Anywhere 通过较早释放在游标的当前行上获取的读锁定来实现这一优点。在级别 2 和级别 3 上,这些锁定必须持续到事务结束以确保可重复的读取。
例如,通过游标更新存货量的事务适合使用这个级别,因为随着进货或卖出对存货量进行的每次调整都不会丢失,而这些频繁调整对其它事务的影响又可以降低到最小程度。
处于隔离级别 2 时,其它事务不能更改符合您的条件的行。如果必须多次读取行并且需要第一个结果集中包含的行不会更改,则可以使用这个级别。
由于需要相对较大数量的读锁定,因此使用这个隔离级别时应谨慎。与级别 3 的事务一样,仔细设计数据库和索引可以减少获取的锁数目,从而提高数据库的性能。
隔离级别 3 适合于将安全性放在首位的事务。由于消除了幻像行,因此可以对行集放心地执行多步操作,而不必担心在操作过程中因出现新行导致结果损坏。
虽然隔离级别 3 可以提供很高的完整性,但在需要支持大量并发事务的大型系统中应谨慎使用。SQL Anywhere 在这一级别上放置的锁数目比任何其它级别都多,因此也增大了一个事务阻碍众多其它事务进程的可能性。