使用 SELECT 语句来锁定 / 设置隔离级别 |
仅可随同 GBase 8s SQL 语句 SET ISOLATION 使用下一级别 Cursor Stability。
当 Cursor Stability 生效时,GBase 8s 在访存的最新的行上放置锁。它为普通的游标放置共享锁,或为更新游标放置可提升锁。一次仅锁定一行;即,每一次访存一行,释放前一行上的锁(除非更新那一行,在此情况下,保持该锁直到事务结束为止。)由于 Cursor Stability 一次仅锁定一行,因此,它对并发的限制低于表锁或数据库锁。
Cursor Stability 确保在程序检测行时,不更改它。当程序更新基于从该行读取的数据的某个其他的表时,这样的行稳定性非常重要。由于 Cursor Stability,程序保证更新是基于当前的信息的。它防止使用陈旧数据。
最后,在 stock 中出现一行,在 manufact 中没有与之相匹配的制造商代码。而且,程序 B 显然有问题;它未删除本应删除的行。使用 Cursor Stability 隔离级别可防止这些后果。
即使使用 Cursor Stability,重新安排前面的场景也可能失败。只需要让程序 B 以与程序 A 相反的序列对表操作。如果在程序 B 移除 manufact 的行之前,从 stock 删除它,则任何程度的隔离都不可防止出错。每当可能发生这种错误时,所有涉及到的程序都必须使用相同的访问顺序。