1、全局锁

锁定数据库中的所有表

-- 加全局锁
flush tables with read lock;-- 释放锁
unlock tables;-- 数据备份 (数据库命令 在dos窗口使用)
mysqldump -uroot -proot student > student.sql 

2、表级锁

每次操作锁住整张表

表锁: 表共享读锁(read lock)、 表独占写锁(write lock)

1、读锁:客户1对表加了读锁,不影响客户2对表的读操作

但会阻塞客户2的写操作

2、写锁:客户1对表加了写锁,会阻塞客户2的读和写操作

-- 加锁
lock tables 表名 read/write;-- 释放锁
unlock tables; / 客户端断开连接

元数据锁(MDL)

这里的元数据,大家可以简单理解为就是一张表的表结构。 也就是说,某一张表涉及到未提交的事务时,是不能够修改这张表的表结构的

意向锁

为了避免 DML 在执行时,加的行锁与表锁的冲突,在 InnoDB中引入了意向锁,使得表锁不用检查每行 数据是否加锁,使用意向锁来减少表锁的检查。

客户1,在执行DML操作时,会对涉及的行加行锁,同时也会对该表加上意向锁。

而其他客户,在对这张表加表锁的时候,会根据该表上所加的意向锁来判定是否可以成功加表锁,而不用逐行判断行锁情况了。

  • 意向共享锁(IS): 由语句select ... lock in share mode添加 。 与表锁共享锁(read)兼容,与表锁排他锁(write)互斥。
  • 意向排他锁(IX): 由insert、update、delete、select...for update添加 。与表锁共享锁(read)及排他锁(write)都互斥,意向锁之间不会互斥。
-- 查看意向锁 行锁的加锁情况
select object_schema,object_name,index_name,lock_type,lock_mode,lock_data from
performance_schema.data_locks;

3、行级锁

每次操作锁住对应的行数据

行锁:锁定单个行记录的锁,防止其他事务对此进行update、delete

共享锁(S):允许一个事务去读一行,阻止其他事务获得相同数据集的排它锁

排他锁(X):允许获取排他锁的事务更新数据,阻止其他事务获得相同数据集的共享锁和排他锁

  • 针对唯一索引进行检索时,对已存在的记录进行匹配时,将会自动优化为行锁。
  • InnoDB的行锁是针对于索引加的锁,不通过索引条件检索数据,那么InnoDB将对表中的所有记录加锁,此时就会升级为表锁。

间隙锁:锁定索引记录间隙(不含该记录),确保索引记录间隙不变,防止其他事务在这个间隙进行insert,产生幻读

临键锁:行锁和间隙锁组合,同时锁住数据,并锁住数据前面的间隙Gap

  • 走唯一索引进行查询时,若查询数据不存在,给该数据的上下区间进行加锁, 优化为间隙锁
  • 走非唯一普通索引进行查询时,向右遍历时最后一个值不满足查询需求时,next-key lock 退化为间隙锁
  • 索引上的范围查询(唯一索引)--会访问到不满足条件的第一个值为止

MySQL数据库 锁相关推荐

  1. Mysql 数据库锁表的原因和解决方法

    Mysql 数据库锁表的原因和解决方法 参考文章: (1)Mysql 数据库锁表的原因和解决方法 (2)https://www.cnblogs.com/xinruyi/p/11108795.html ...

  2. 徐无忌MySQL笔记:MySQL数据库锁有几种?实现原理是什么?

    徐无忌MySQL笔记:MySQL数据库锁有几种?实现原理是什么? 完成:第一遍 1.数据库并发控制通过什么实现? 当多个事务并发方法对同一个数据进行操作 通过数据库锁实现对数据库的并发控制. 2.锁类 ...

  3. MySQL数据库锁介绍

    MySQL数据库锁介绍 1. 锁的基本概念 当并发事务同时访问一个资源时,有可能导致数据不一致,因此需要一种机制来将数据访问顺序化,以保证数据库数据的一致性. 锁就是其中的一种机制. 我们可以用商场的 ...

  4. MYSQL数据库锁概念

    MYSQL数据库锁概念 数据库中的锁,就是数据库协调多个进程或者线程并发访问某一资源的机制. 除了传统的计算机资源(CPU .RAM.磁盘I/O)的争用之外,数据也是提供一种多用户共享的资源. 锁是为 ...

  5. mysql 数据库锁一般处理

    MySQL在进行alter table等DDL操作时,有时会出现Waiting for table metadata lock的等待场景.而且,一旦alter table TableA的操作停滞在Wa ...

  6. MySQL数据库锁机制之MyISAM引擎表锁和InnoDB行锁详解

    MySQL中的锁概念 Mysql中不同的存储引擎支持不同的锁机制.比如MyISAM和MEMORY存储引擎采用的表级锁,BDB采用的是页面锁,也支持表级锁,InnoDB存储引擎既支持行级锁,也支持表级锁 ...

  7. MySQL数据库——锁机制

    1 认识锁机制 在认识锁机制前,首先思考一个问题:在同一时刻,用户A和用户B同时要获取并修改sh_goods表中id等于2的stock库存量值,此时会发生什么呢? 假设在初始情况下,sh_ goods ...

  8. MySQL——数据库锁原理

    摘要 数据库锁设计的初衷是处理并发问题.作为多用户共享的资源,当出现并发访问的时候,数据库需要合理地控制资源的访问规则.例如,操作缓冲池中的LRU列表,删除.添加.移动LRU列表中的元素,为了保证一致 ...

  9. MySQL数据库锁详解

    目录 一.锁的分类 一.按照粒度分类 1.分类 2.代码操作 二.按照属性分类 1.共享锁 2.排他锁 3.代码操作 三.按照加锁方式分类 1.隐式的自动加锁 2.显示的加锁 四.按照算法分类 1.间 ...

  10. Mysql 数据库锁总结

    数据库锁 数据库锁主要是用来解决并发问题 从锁的影响范围,可以分为: 全局锁(库级别) 表级锁 行级锁 一.全局锁 全局锁是对整个数据库加锁,可以使用以下命令 Flush tables with re ...

最新文章

  1. Siamese网络(孪生神经网络)详解
  2. Vue-cli 项目打包布署(简单清晰)
  3. 【script】python自定义时间格式的几种情况
  4. 干货 | 一文掌握常用的机器学习模型
  5. 冒险岛手游服务器维护界面,冒险岛手游游戏界面全解 丰富轻松画风
  6. C 语言绝对值函数abs实现技巧
  7. 史上最牛12306抢票攻略
  8. 自动配置和 thymeleaf模板引擎
  9. 当我们谈论跳槽时在谈论什么
  10. (翻译)锚定效应(Anchoring)
  11. 2020N1叉车司机证考试及N1叉车司机考试软件
  12. 软件设计师必考精华 - 面相对象
  13. Vue-5 路由参数的传递和获取(query 和 params),导航守卫和路由元信息,History模式
  14. 03-Python基础语法(下)
  15. Oracle—tablespace使用
  16. js 根据日期转换星期
  17. 极其简单的Python爬虫音乐
  18. [数字信号处理]IIR滤波器基础
  19. EPON和GPON的区别
  20. 【摘录】Ubuntu 10.10编译Android froyo可能需要注意的几个地方

热门文章

  1. r语言中,如何将分类变量化为虚拟变量
  2. 鼠标移动事件(鼠标移动到主菜单上显示子菜单)
  3. WIN10 的adobe flash player 在IE11中用不了
  4. OPCODES学习网址
  5. 一个“精神病”人的世界观
  6. 学习笔记整理——vim,vim文件编码,vim配置文件
  7. 解决Zxing解析本地图片二维码,识别率低,识别不出来的问题!
  8. 使用VMware安装Centos6的步骤
  9. Objective-C学习资源
  10. oro什么意思_oro