数据库锁机制
来源:互联网 发布:淘宝上秒杀活动在哪里 编辑:程序博客网 时间:2024/06/03 18:51
共享锁和排他锁
共享锁
S锁
,又称为读锁,若事务T对数据对象A加上S锁,则事务T可以读取A但不能修改A,其他事务只能再对A加S锁,而不能加排他锁X锁
,直到T释放A上的S锁。这保证了其他事务可以读A,并且在T释放A上的S锁之前不能对A做任何更新。排他锁
X锁
,又称为写锁,若事务T对数据对象A加上X锁,则事务T可以读取A,也可以修改A,但是其他事务不能对数据对象A加任何锁
共享锁只用于表级,排他锁用于行级
数据库死锁的原因:若干事务相互等待对方释放锁,就会陷入无限等待状态,系统进入死锁
悲观锁和乐观锁
- 注意这里的悲观锁乐观锁与上面说的共享锁排他锁是不互斥的,这里的悲观乐观锁更多的强调加锁的力度和时机。
悲观锁:假定会发生并发冲突,屏蔽一切可能违反数据完整性的操作。悲观锁假定其他用户企图访问或者改变你正在访问、改变的对象的概率很高,在悲观锁环境中,在改变对象之前就将对象锁住,直到提交所作的更改后才释放锁。悲观锁不论是行锁还是页锁,加锁的时间都比较长,这样会限制其他用户的访问,也就是说悲观锁的并发性不好。
乐观锁:假设不会发生并发冲突,只在提交操作时检查是否违反数据完整性。乐观锁无法解决数据脏读的问题。乐观锁认为用户企图改变你的正在更新的对象概率很小,因此乐观锁直到你准备提交所作更改时才将对象锁住,当你读取以及更改对象时加不锁。因此乐观锁加锁的时间更较悲观锁更短,可以获得更好的并发访问性能。如果第二个用户恰好在第一个用户提交更改之前读取了该对象(即脏读),那么当他完成了自己的更改进行提交时,数据库就会发现该对象已经变化了,要求第二个用户重新读取该对象并作出更改。这说明在乐观锁环境中,会增加并发用户读取对象的次数。
0 0
- Oracle 数据库锁机制
- Oracle 数据库锁机制
- 数据库锁机制
- 数据库锁机制
- 数据库锁机制
- 数据库锁机制
- 数据库中的锁机制
- 数据库锁机制
- 数据库锁机制
- 【转载】数据库锁机制
- 数据库锁机制
- 数据库锁机制
- MySQL数据库锁机制
- 数据库锁机制
- 数据库的锁机制
- 数据库锁机制
- 6、数据库锁机制
- Mysql数据库锁机制
- SIM71004G模块使用Linux C语言实现打电话发短信
- Android开源:数据库ORM框架GreenDao学习心得及使用总结
- MMAP TOOL Design
- LeetCode 108. Convert Sorted Array to Binary Search Tree
- NFS ROOT 启动内核的配置(UBoot)
- 数据库锁机制
- tjut 2896
- 161009_qt显示阿拉伯输入法9x7点阵
- mysql 存储引擎
- linux多线程之条件变量
- spring的几个问题
- C++:Boost库_weak_ptr
- 再见北理工:忆北京研究生的编程时光
- Redis深入之路(三)