blog » 数据库基础 » 共享锁与排它锁总结

共享锁与排它锁总结

保证调度中事务可串行化的方法之一是对数据项的访问以互斥的方式进行,当一个事务访问某个数据项时,其他任何事务都不能修改该数据项。实现这个要求的最常用的方法就是:只有当一个事务目前在一个数据项上持有某种锁时,才允许该事务访问这个数据项。

1、共享锁与排他锁

给数据项加的锁有两种:

⑴ 共享锁:如果事务T获得了数据项Q上的共享锁(记为S),则T可读Q但不能写Q;
⑵ 排他锁:如果事务T获得了数据项Q上的排他锁(记为X),则T既可读Q又可写Q。

每个事务要根据自己将对数据项Q进行的操作申请适当的锁,该请求是发送给并发控制管理器的。只有在并发控制管理器授予所需要的锁之后,事务才能继续其操作。

2、锁相容函数

对于给定的锁类型集合,可以按如下方式定义一个锁相容函数:令A与B代表任意类型的锁。假设事务Ti请求对数据项Q加A类型锁,而事务Tj(Ti≠Tj)当前在数据项Q上拥有B类型锁。尽管数据项Q上存在B类型锁,但如果事务TI可以立即获得数据项Q上的A类型锁,则称A类型锁与B类型锁相容。锁相容函数一般用矩阵来表示,称为锁相容矩阵,如图11-1-1所示。图中只有其值为TRUE的两类锁才相容。

锁相容函数

图11-1-1:锁相容矩阵

在实际的数据库管理系统中,并发控制管理机制中的锁不止排他锁和共享锁,还有其他形式的锁。具体内容可以参考各商业DBMS的各种文档或手册。

This post has already been read 993 times!

Related posts

RSS 2.0 | leave a response | trackback

发表评论