数据库锁?

2022-01-21 139 0

锁分类、:从数据库的角度分为:排他锁,共享锁,更新锁;从程序员的角度分为:乐观锁,悲观锁。

乐观锁:乐观的认为在获取数据的时候,其他人不会修改数据,所以不会上锁,只是更新的时候会判断这个数据是不是更新了,可以使用版本号机制。

悲观锁:具有强烈的独占性和排他性,认为在获取数据的时候,其他人会修改数据,对数据进行上锁,当有其他人拿数据的时候就会进行阻塞,直到它获得锁,会造成性能的开销。

共享锁(S锁):也叫读锁,用于所有只读数据的操作。性质:1.多个事务可封锁同一个共享页;2.锁住之后,任何事务不能够修改;3.读取完毕之后,立即对该页释放锁。

排他锁(X锁):也叫写锁,一个事务对数据加了排他锁之后,其他任何事务不能对其加任何锁了。性质:1.只允许一个事务进行加锁;2.其他事务必须等到排他锁释放后才能对数据进行操作;3.写锁需要等到事务结束的时候才能释放。

更新锁(U锁):在修改的初始阶段可对数据使用更新锁,避免使用共享锁产生的死锁现象。性质:1.用来预定要对此页施加X锁,它允许其他事务读,但不允许再施加U锁或X锁;2. 当被读取的页要被更新时,则升级为X锁;3. U锁一直到事务结束时才能被释放。

行锁:锁的作用范围是行级别。

表锁:锁的作用范围是表级别。

相关文章

介绍下分库分表?
什么是事务?

发布评论