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. sql-GOTO跳转
  2. 第二十四章:页面导航(五)
  3. Qt模型视图中的委托
  4. C++ Primer 5th笔记(chap 18 大型程序工具) 多重继承与虚继承
  5. 字符串分割 函数实现
  6. jquery 判断是否有类名_Day037-JS、jQuery
  7. gsoap的几个常用设置选项
  8. fstream下的读写操作
  9. ubuntu更改屏幕界面大小和中文
  10. 手写tomcat监控工具---宕机重启
  11. LeetCode62 Unique Paths
  12. Git,GitHub入门
  13. (十八)其他数据库对象,视图,序列
  14. Python学习笔记(15) 网络爬虫使用proxy实现自动换IP防封锁
  15. element-ui在打开两个对话框时出现阴影的解决办法
  16. 基于采样的路径规划方法
  17. 大海捞针 - Everthing的实现思路
  18. FU-A STAP-A
  19. 2022阿里巴巴云栖大会
  20. allegro制作通孔焊盘封装-flash热风焊盘-图文并茂的Allegro 通孔焊盘制作教程

热门文章

  1. Android Google Map集成以及部分功能的实现
  2. htmlparser 获取html,根据htmlparser写的一个提取页面纯文本的C#程序
  3. 抽象方法和抽象类规则
  4. 常用去除离群值的算法!
  5. C语言中的自定义函数
  6. 时分多路复用TDM与时分多址TDMA对比 优缺点以及应用场景
  7. Array方法、String方法
  8. 最新云豹二开直/播短视频完整系统源码+带开发文档/教程
  9. 剖析8B/10B的实现机制
  10. 详解FPGA实现8b10b编码原理(含VHDL及verilog源码)