`
jeffen2006
  • 浏览: 255383 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

数据库事务3

 
阅读更多

锁有很多种分法:

  • 从封锁程度分:
    1、共享锁——要执行select语句需要先得到共享锁。
    2、独占锁——要执行update/insert/delete语句需要先得到独占锁。
    资源上已经放置的锁 第二个事务进行读操作 第二个事务进行更新操作
    立即获得共享锁  立即获得独占锁
    共享锁 立即获得共享锁 等待共享锁释放
    独占锁 等待独占锁释放 等待独占锁释放

    3、更新锁——在update的初始化阶段用来锁定可能要被更改的资源。一个资源上只能放置一个更新锁,这样有效的避免了死锁(如果只有共享锁和独占锁,则当多个更新同时操作同一个资源的时候,都会等着对方释放共享锁而陷入死锁。)。
    update的步骤如下:
    首先,获得一个更新锁,读取记录。
    接着,将更新锁升级为独占锁,执行更新操作。

 

  • 从操作资源的粒度分:
    数据库级锁、表级锁、行级锁等等。粒度越高,事务的隔离性越高,并发性越低。
    数据库还支持锁自动升级,将多个低粒度锁如行级锁升级成少量的高粒度锁如表级锁,以降低系统负荷。
  • 从应用程序的角度分: 
    悲观锁、乐观锁,详细见后面的介绍。


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics