美文网首页
数据库锁机制

数据库锁机制

作者: 形式主义_5adc | 来源:发表于2017-12-19 22:15 被阅读0次

1.共享锁:数据库在执行查询操作时会向table添加共享锁,不同的共享锁之间是兼容的,这意味着共享锁不阻止其它session同时读资源。

2.互斥锁:数据库在执行update操作前会试图向当前表添加互斥锁,而根据数据库的规定,同一资源上不可以同时存在共享锁和互斥锁,所以,update操作需要等到施加共享锁的操作结束后才能执行。共享锁不阻止其它session同时读资源,但阻止其它session update。

例:————————————————————

T1:    select * from table

T2:    select * from table

T3:    update table set column1='hello'

——————————————————————

T1和T2可以同时运行,而T3需要等到T1和T2都运行完才能运行。

3.死锁的发生:

例:————————————————————

T1:

begin tran

select * from table (holdlock) (holdlock意思是加共享锁,直到事物结束才释放)

update table set column1='hello'

T2:

begin tran

select * from table(holdlock)

update table set column1='world'

——————————————————————————

假设T1和T2同时达到select,T1对table加共享锁,T2也对加共享锁,当

T1的select执行完,准备执行update时,根据锁机制,T1的共享锁需要升

级到排他锁才能执行接下来的update.在升级排他锁前,必须等table上的

其它共享锁释放,但因为holdlock这样的共享锁只有等事务结束后才释放,

所以因为T2的共享锁不释放而导致T1等(等T2释放共享锁,自己好升级成排

他锁),同理,也因为T1的共享锁不释放而导致T2等。死锁产生了。

4.预防死锁发生:

1) 将共享锁换成互斥锁

2) 将共享锁换成更新锁(效率高)

相关文章

  • 数据库为什么需要锁机制?有哪些锁机制?

    数据库为什么需要锁机制?有哪些锁机制?

  • MySQL的锁

    数据库锁 概述 相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。比...

  • 秒杀系统技术方案演变过程

    前言:秒杀系统需要保证商品库存不能出现超卖现象。一、数据库锁机制(悲观锁、乐观锁)实现秒杀(1)悲观锁:数据库本身...

  • MySQL锁机制

    锁机制是数据库与文件系统最大的差别了,而不同的数据库,不同的引擎锁机制也有所不同,由于MySQL的MyISAM用的...

  • 多线程之锁

    其实常用也就那么几个锁,总感觉线程所用的锁机制和数据库的很相似,什么读写锁,就和数据库的共享锁,排他锁没什么区别....

  • 解决并发问题,数据库常用的两把锁!

    在写入数据库的时候需要有锁,比如同时写入数据库的时候会出现丢数据,那么就需要锁机制。 数据锁分为乐观锁和悲观锁 它...

  • Java面试必备之数据库乐观锁和悲观锁分析!

    在写入数据库的时候需要有锁,比如同时写入数据库的时候会出现丢数据,那么就需要锁机制。 数据锁分为乐观锁和悲观锁 它...

  • 13.MySQL锁机制

    MySQL锁 相对于其他的数据库而言,MySQL的锁机制比较简单,最显著的特点就是不同的存储引擎支持不同的锁机制。...

  • MySQL学习

    MySQL锁概述 相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。...

  • MySQL解锁与锁表

    MySQL锁概述 相对其他数据库而言,MySQL的锁机制比较简单,其最显著的特点是不同的存储引擎支持不同的锁机制。...

网友评论

      本文标题:数据库锁机制

      本文链接:https://www.haomeiwen.com/subject/hbziwxtx.html