数据库并发控制-解决问题

作者:vkvi 来源:千一网络(原创) 日期:2009-7-27

前面谈了,如果不对事务的并发问题作控制,则会产生一系列的问题。

X 锁和 S 锁

X 锁(exclusive locks,排他锁) 如果事务 T 对数据 A 加了 X 锁,则:事务 T 可对数据 A 进行读取和修改;其他事务不能对数据 A 加任何锁,也不能读取和修改数据 A。

S 锁(share locks,共享锁) 如果事务 T 对数据 A 加了 S 锁,则:事务 T 可对数据 A 进行读取,但不能修改;其他事务也能对数据 A 加 S 锁,但不能加 X 锁。

封锁协议

一级封锁协议 在事务 T 修改数据 A 之前,对数据 A 加上 X 锁,直到事务结束才释放,解决了丢失更新的问题。

二级封锁协议 在一级封锁协议的基础上,在事务 T 读取数据 A 之前,对数据 A 加上 S 锁,直到读取结束才释放,解决了脏读的问题。

三级封锁协议 在一级封锁协议的基础上,在事务 T 读取数据 A 之前,对数据 A 加上 S 锁,直到事务结束才释放,解决了不可重复读的问题。

两段封锁协议 对任何数据进行读写之前必须对该数据加锁,在释放一个封锁之后,事务不再申请和获得任何其他封锁,这样缩短了封锁时间,提高了并发性,同时解决了数据不一致的问题。

你前面那位网友看了:Console 程序为什么会被暂停,要回车才能继续

▲▲▲嘿,欢迎转载传播本站原创文章,尽量保留来源噢。▲▲▲

文章评论
  • 1 楼:评论
    超喜欢这个网站,都讲到点子上了
标题:必填
内容:
本站永远终止与捏造“罪名”不支付广告费的某度联盟合作。
vkvi
vkvi

作者简介: vkvi,致力于 .NET Web 开发、移动开发的技术推广,在 .NET、SQL Server、Windows Server 等方面有深入研究和丰富经验,10 年间共计撰写文章 4000 余篇。 主持金融、国土、农业、电商等多个行业项目执行, 推行“技术提升生产力、人心决定成功率”的管理理论。 联系他