我们可以在 JDBC 连接上设置事务隔离级别,以控制对并发事务之间公共记录的读/写访问的可见性级别。数据库实现这一点的一种方法是在记录/表上放置不同类型的锁。
但是数据库还有其他方式实现这些事务级别吗?
我们可以在 JDBC 连接上设置事务隔离级别,以控制对并发事务之间公共记录的读/写访问的可见性级别。数据库实现这一点的一种方法是在记录/表上放置不同类型的锁。
但是数据库还有其他方式实现这些事务级别吗?
我不想太深入研究可以在很多关于数据库管理系统设计的非常好的书籍中阅读的理论内容。
在遵循悲观获取和释放锁的方法的数据库中,所有四个隔离级别都是使用锁来实现的。有许多乐观方法(例如,FOCC - 前向乐观并发控制以及 BOCC - 后向...)可以跟踪 DML 语句已读取或写入的数据以及事务是否即将提交它根据所有其他事务检查这些读取和写入集。如果这些集合不相交,则可以写入和提交事务。如果事务的读集与另一个(已提交)事务的写集冲突,数据库系统必须回滚该事务。这可以在不使用锁的情况下完成。这些乐观的方法已经过充分研究,并且可以在没有很大性能损失的情况下应用碰撞或多或少是异常的,而且数量很少。