zoukankan      html  css  js  c++  java
  • 按照锁的粒度分数据库锁有哪些?锁机制与InnoDB锁算法?

    在关系型数据库中,可以按照锁的粒度把数据库锁分为行级锁(INNODB引擎)、表级锁(MYISAM引擎)和页级锁(BDB引擎 )。
    MyISAM和InnoDB存储引擎使用的锁:
    MyISAM采用表级锁(table-level locking)。
    InnoDB支持行级锁(row-level locking)和表级锁,默认为行级锁。
    行级锁,表级锁和页级锁对比
    行级锁:MySQL中锁定粒度最细的一种锁,表示只针对当前操作的行进行加锁。行级锁能大大减少数据库操作的冲突。其加锁粒度最小,但加锁的开销也最大。行级锁分为共享锁和排他锁。
    特点:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。
    表级锁:MySQL中锁定粒度最大的一种锁,表示对当前操作的整张表加锁,它实现简单,资源消耗较少,被大部分MySQL引擎支持。最常使用的MyISAM与InnoDB都支持表级锁定。表级锁定分为表共享读锁(共享锁)与表独占写锁(排他锁)。

    特点:开销小,加锁快;不会出现死锁;锁定粒度大,发出锁冲突的概率最高,并发度最低。
    页级锁:是MySQL中锁定粒度介于行级锁和表级锁中间的一种锁。表级锁速度快,但冲突多,行级冲突少,但速度慢。所以取了折衷的页级,一次锁定相邻的一组记录。
    特点:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般

  • 相关阅读:
    centos7网络配置
    centos7安装gitlab错误解决
    数据库事务的隔离级别
    数据库事务的特性
    windows系统下安装redis扩展
    windows 7搭建基于docker的nginx, php运行环境
    php foreach 引用注意
    mysql远程连接10038
    mysql忘记root密码
    phpstorm添加sdk
  • 原文地址:https://www.cnblogs.com/WangMengyi/p/14009018.html
Copyright © 2011-2022 走看看