zoukankan      html  css  js  c++  java
  • 数据库锁

     

    【共享锁】【读锁】共享锁(Share locks 简记为S锁)
    【独占锁】(事务结束释放)【写锁】排它锁(Exclusive locks 简记为X锁)
    【更新锁】(避免共享锁的死锁情况)
     

    【封锁协议  】
        1 级封锁协议是:事务T在修改数据R之前必须先对其加X锁,直到事务结束才释放。事务结束包括正常结束(COMMIT)和非正常结束(ROLLBACK)。 1级封锁协议可防止丢失修改,并保证事务T是可恢复的。在1级封锁协议中,如果仅仅是读数据不对其进行修改,是不需要加锁的,所以它不能保证可重复读和不 读"脏"数据。  
        2级封锁协议是:1级封锁协议加上事务T在读取数据R之前必须先对其加S锁,读完后即可释放S锁。2级封锁协议除防止了丢失修改,还可进一步防止读"脏"数据。  
        3级封锁协议是:1级封锁协议加上事务T在读取数据R之前必须先对其加S锁,直到事务结束才释放。3级封锁协议除防止了丢失修改和不读'脏'数据外,还进一步防止了不可重复读。
     

    【锁升级】

    【悲观锁】

    一、显式执行数据库系统的“独占锁”。直到事务结束时释放。
    二、应用程序实现悲观锁:增加锁字段。
     
    悲观锁假定当前事务操纵数据资源时,肯定还会有其他事务同时访问该数据资源,为了避免当前事务的操作受到干扰,先锁定资源。尽管悲观锁能够防止丢失更新和不可重复读这类并发问题,但是它影响并发性能,因此应该很谨慎地使用悲观锁。
     

    【利用Hibernate的版本控制实现乐观锁】

    递增整数,或者时间戳。
     
     

    MySQL数据库锁定机制

    http://www.cnblogs.com/ggjucheng/archive/2012/11/14/2770445.html

    MySQL有三种锁的级别:页级、表级、行级。
    1. MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking);
    2. BDB存储引擎采用的是页面锁(page-level locking),但也支持表级锁;
    3. InnoDB存储引擎既支持行级锁(row-level locking),也支持表级锁,但默认情况下是采用行级锁。
     
      1. 表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
      2. 行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。
      3. 页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。

  • 相关阅读:
    如何在一个控件上同时实现单触和多触事件
    看看iOS 5.0 beta 6都有哪些变化吧
    转,net实现下载
    转检测到潜在危险
    如何分析已有项目如何能够得到最快最大的提升???
    转Unity 入门
    近段总结
    转,net几个热点问题
    dll动态链接库
    转使用NUnit在.Net编程中进行单元测试
  • 原文地址:https://www.cnblogs.com/lsx1993/p/4619987.html
Copyright © 2011-2022 走看看