zoukankan      html  css  js  c++  java
  • MySQL锁(锁升级)

      锁升级(Lock Escalation)是指将当前锁的粒度降低。举个例子:数据库可以把一个表的1000个行锁升级为一个页锁,或者将页锁升级为表锁。

      如果在数据库的设计中认为锁是一种稀有资源,而且想避免锁的开销,那数据库中会频繁出现锁升级现象。

      SQL Server 数据库的设计认为锁是一种稀有的资源,在适合的时候会自动地将行、键或分页锁升级为更粗粒度地表级锁,这种升级保护了系统资源,防止系统使用太多地内存来维护锁,在一定程度上提高了效率。

      即使在SQL Server 2005版本后,SQL Server数据库支持了行锁,但是其设计和InnoDB存储引擎完全不同,在以下情况下依然可能发生锁升级:

        由一句单独的SQL语句在一个对象上持有的锁的数量超过了阀值,默认这个阀值为5000。值得注意的是,如果是不同对象,则不会发生锁升级;

        锁资源占用的内存超过了激活内存的40%时就会发生锁升级;

      InnoDB存储引擎不存在锁升级的问题。因为其不是根据每个记录来产生行锁的,相反,其根据每个事务访问的每个页对锁进行管理,采用的是位图的方式。因此不管一个事务锁住页中一个记录还是多个记录,其开销通常都是一致的。

  • 相关阅读:
    061.Python前端Django组件用户认证组件
    060.Python组件-中间件
    059.Python前端Django组件cooki和session
    058.Python前端Django与Ajax
    057.Python前端Django模型ORM多表查询
    数字签名与数字证书的原理
    加密算法的分类与区别
    Linux操作php.ini文件
    Linux添加普通权限账号并授予root权限
    Linux 切换 shell
  • 原文地址:https://www.cnblogs.com/huan30/p/12313027.html
Copyright © 2011-2022 走看看