mysql锁粒度就是我们通常所说的锁级别。数据库引擎具有多粒度锁定,允许一个事务锁定不同类型的资源。mysql数据库有三种锁的级别,分别是:页级锁、表级锁和行级锁。

锁粒度

(推荐教程:mysql教程)

锁粒度就是我们通常所说的锁级别。

数据库引擎具有多粒度锁定,允许一个事务锁定不同类型的资源。 为了尽量减少锁定的开销,数据库引擎自动将资源锁定在适合任务的级别。

锁定在较小的粒度(例如行)可以提高并发度,但开销较高,因为如果锁定了许多行,则需要持有更多的锁。 锁定在较大的粒度(例如表)会降低了并发度,因为锁定整个表限制了其他事务对表中任意部分的访问。 但其开销较低,因为需要维护的锁较少。

锁层次结构

数据库引擎通常必须获取多粒度级别上的锁才能完整地保护资源。这组多粒度级别上的锁称为锁层次结构。例如,为了完整地保护对索引的读取,数据库引擎实例可能必须获取行上的共享锁以及页和表上的意向共享锁。

MySQL有三种锁的级别:页级、表级、行级

MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking);

BDB存储引擎采用的是页面锁(page-level locking),但也支持表级锁;

InnoDB存储引擎既支持行级锁(row-level locking),也支持表级锁,但默认情况下是采用行级锁。

MySQL这种锁的特性可大致归纳如下:

表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。

行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。

页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。

mysql的粒度_mysql锁粒度是什么相关推荐

  1. mysql锁粒度是什么意思_mysql锁粒度是什么

    mysql锁粒度就是我们通常所说的锁级别.数据库引擎具有多粒度锁定,允许一个事务锁定不同类型的资源.mysql数据库有三种锁的级别,分别是:页级锁.表级锁和行级锁. 锁粒度 (推荐教程:mysql教程 ...

  2. mysql数据库支持的锁粒度包括_1. Mysql的并发(锁策略、锁粒度、事务)

    并发控制 在处理并发读或者写时,可以通过实现一个由两种类型的锁组成的锁系统来解决问题.这俩种系统的锁通常被称为共享锁(shared lock)和排他锁(exclusive lock),也叫读锁(rea ...

  3. mysql 如何解锁_mysql锁表如何解锁

    什么是MySQL锁表? 为了给高并发情况下的mysql进行更好的优化,有必要了解一下mysql查询更新时的锁表机制. MySQL有三种锁的级别:页级.表级.行级. MyISAM和MEMORY存储引擎采 ...

  4. 个人对于MySQL的理解_MySQL锁的理解

    一.事务四要素:ACID原子性(Atomicity):要么做完,要么啥都不做,没有中间状态 一致性(Consistency):这个是个比较有争议的概念,个人理解是通过AID来保证数据正确性,保证从一个 ...

  5. 监控mysql锁定状态_MySQL 锁的监控及处理

    故障模拟 # 添加两项配置 vi /etc/my.cnf [mysqld] autocommit=0 innodb_lock_wait_timeout = 3600 systemctl restart ...

  6. mysql解锁命令_mysql锁表查询和解锁操作

    解除正在死锁的状态有两种方法: 第一种: 1.查询是否锁表 show OPEN TABLES where In_use > 0; 2.查询进程(如果您有SUPER权限,您可以看到所有线程.否则, ...

  7. 乐观锁的颗粒度_MySql数据库锁机制详解

    概述 数据库锁定机制简单的来说,就是数据库为了保证数据的一致性与完整性,而使各种共享资源在被并发访问时变得有序所设计的一种规则.对于任何一种数据库来说都需要有相应的锁机制,所以MySQL也不能例外.M ...

  8. myisam表锁及锁粒度调节

    myisam支持表锁,对表的读写是串行执行的,在一定条件下,Myisam表也支持查询和插入操作的并发执行. Myisam存储引擎有一个系统变量concurrent_insert,专门用以控制其并发插入 ...

  9. mysql 插入加锁_MySQL的死锁系列- 锁的类型以及加锁原理

    疫情期间在家工作时,同事使用了 insert into on duplicate key update 语句进行插入去重,但是在测试过程中发现了死锁现象: ERROR 1213 (40001): De ...

最新文章

  1. nginx安装包 linux,Linux(CentOS)环境下安装下载Nginx并配置
  2. 屏蔽storm ui的kill功能
  3. c语言的编译过程,程序编译过程
  4. iOS Sprite Kit教程之滚动场景
  5. Python常用的六款编程开发工具汇总!
  6. 面试必会系列 - 1.4 类加载机制
  7. python2.7调用mysql存储过程并且返回结果
  8. why our extension project didn't load S3 view and controller
  9. vim的强大,vim设置和插件的使用,脱离windows才是王道
  10. 分布式事务架构设计原理
  11. webdriver---API---(java版) 高级应用
  12. 一篇文章告诉你[C++]数组初始化
  13. win10 uwp 渲染原理 DirectComposition 渲染
  14. android 开发日历功能,Android开发之如何实现日历控件
  15. python flask服务器假死_IE浏览器访问Flask自带服务器假死问题解决方法 - digwtx
  16. CuPy is not correctly installed
  17. Oracle官文,明确20c不能用于生产环境
  18. [BZOJ]4864: [BeiJing 2017 Wc]神秘物质
  19. 3D检测无痛涨点 | 暴涨8%!上下文感知数据增强方法CA-Aug
  20. 鼎捷软件携手华为助力产业数智化,荣获两大“优秀伙伴”殊荣

热门文章

  1. http url get方式传递数组参数
  2. CSS外边距与内边距
  3. abs、fabs、fabsf函数的用法区别
  4. 启动本地mysql的几种方式
  5. js 设置window.open打开新窗口的title
  6. MySQL环境变量的配置(三)(Windows 11)
  7. Python容器:列表、元组、字典与集合
  8. shell实现文本处理详解
  9. REST API 详解
  10. BLAM源码解析(二)—— 从激光回调入手