数据库锁的理解

事务:就是被绑定在一起作为一个逻辑工作单元的 SQL 语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。为了确保要么执行,要么不执行,就可以使用事务。要将有组语句作为事务考虑,就需要通过 ACID 测试,即原子性,一致性,隔离性和持久性。

锁:在所以的 DBMS 中,锁是实现事务的关键,锁可以保证事务的完整性和并发性。与现实生活中锁一样,它可以使某些数据的拥有者,在某段时间内不能使用某些数据或数据结构。当然锁还分级别的。

锁分悲观锁和乐观锁

悲观锁:共享锁;排他锁、更新锁

  • 共享锁S:可同时读不可写;

  • 排他锁X:只有一个事务可读写;

  • 更新锁U:防止死锁;

理解:A和B同时申请S锁,要修改数据时AB都要升级为X锁,AB僵持,都等对方释放,造成死锁。若A之前申请了U锁,A可优先更新为X锁,可修改数据。(以下三个例子可以说明)

T1:select ...

T2:update...

T2要等T1执行完,T2要加X锁才能执行

 

T1:select ...

T2:select...

共享锁,T2不用等T1

 

  • T1:select...

     update...

T2:select...

     update...

容易死锁

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值