1条回答
默认
最新
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
墨值悬赏
Oracle的事务锁(TX锁)是如何工作的?
Oracle事务的发起是自动的,发起的第一个修改时会得到事务锁。事务锁会被一直持有,直至事务执行提交或回滚。事务锁被用作一种排除机制,使得其他会话可以等待这个事务完成。
在Oracle中,由于锁是数据的一个属性,所以Oracle不需要传统的锁管理器。事务只是找到数据,如果数据还没有被锁定,则对其锁定。
在Oracle对数据行锁定时,行指向事务ID的一个副本,事务ID存储在包含数据的块中,释放锁时,事务ID却会保留下来。这个事务ID是事务所独有的,由撤销段号、槽和序列号组成。把事务ID留在包含数据行的块上,可以告诉其他会话:你“拥有”这个数据(并非拥有块上的所有数据,只是你修改的那一行“归你所有”)。另一个会话到来时,它会看到事务ID,由于事务ID表示一个事务,所以可以很快地查看持有这个锁的事务是否是活动的。如果锁是不活动的,则允许会话访问这个数据。如果锁还是活动的,会话就会要求一旦释放锁就得到通知。
评论
有用 13
墨值悬赏