MySQL数据库 锁
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)
意向锁
客户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数据库 锁相关推荐
- Mysql 数据库锁表的原因和解决方法
Mysql 数据库锁表的原因和解决方法 参考文章: (1)Mysql 数据库锁表的原因和解决方法 (2)https://www.cnblogs.com/xinruyi/p/11108795.html ...
- 徐无忌MySQL笔记:MySQL数据库锁有几种?实现原理是什么?
徐无忌MySQL笔记:MySQL数据库锁有几种?实现原理是什么? 完成:第一遍 1.数据库并发控制通过什么实现? 当多个事务并发方法对同一个数据进行操作 通过数据库锁实现对数据库的并发控制. 2.锁类 ...
- MySQL数据库锁介绍
MySQL数据库锁介绍 1. 锁的基本概念 当并发事务同时访问一个资源时,有可能导致数据不一致,因此需要一种机制来将数据访问顺序化,以保证数据库数据的一致性. 锁就是其中的一种机制. 我们可以用商场的 ...
- MYSQL数据库锁概念
MYSQL数据库锁概念 数据库中的锁,就是数据库协调多个进程或者线程并发访问某一资源的机制. 除了传统的计算机资源(CPU .RAM.磁盘I/O)的争用之外,数据也是提供一种多用户共享的资源. 锁是为 ...
- mysql 数据库锁一般处理
MySQL在进行alter table等DDL操作时,有时会出现Waiting for table metadata lock的等待场景.而且,一旦alter table TableA的操作停滞在Wa ...
- MySQL数据库锁机制之MyISAM引擎表锁和InnoDB行锁详解
MySQL中的锁概念 Mysql中不同的存储引擎支持不同的锁机制.比如MyISAM和MEMORY存储引擎采用的表级锁,BDB采用的是页面锁,也支持表级锁,InnoDB存储引擎既支持行级锁,也支持表级锁 ...
- MySQL数据库——锁机制
1 认识锁机制 在认识锁机制前,首先思考一个问题:在同一时刻,用户A和用户B同时要获取并修改sh_goods表中id等于2的stock库存量值,此时会发生什么呢? 假设在初始情况下,sh_ goods ...
- MySQL——数据库锁原理
摘要 数据库锁设计的初衷是处理并发问题.作为多用户共享的资源,当出现并发访问的时候,数据库需要合理地控制资源的访问规则.例如,操作缓冲池中的LRU列表,删除.添加.移动LRU列表中的元素,为了保证一致 ...
- MySQL数据库锁详解
目录 一.锁的分类 一.按照粒度分类 1.分类 2.代码操作 二.按照属性分类 1.共享锁 2.排他锁 3.代码操作 三.按照加锁方式分类 1.隐式的自动加锁 2.显示的加锁 四.按照算法分类 1.间 ...
- Mysql 数据库锁总结
数据库锁 数据库锁主要是用来解决并发问题 从锁的影响范围,可以分为: 全局锁(库级别) 表级锁 行级锁 一.全局锁 全局锁是对整个数据库加锁,可以使用以下命令 Flush tables with re ...
最新文章
- Siamese网络(孪生神经网络)详解
- Vue-cli 项目打包布署(简单清晰)
- 【script】python自定义时间格式的几种情况
- 干货 | 一文掌握常用的机器学习模型
- 冒险岛手游服务器维护界面,冒险岛手游游戏界面全解 丰富轻松画风
- C 语言绝对值函数abs实现技巧
- 史上最牛12306抢票攻略
- 自动配置和 thymeleaf模板引擎
- 当我们谈论跳槽时在谈论什么
- (翻译)锚定效应(Anchoring)
- 2020N1叉车司机证考试及N1叉车司机考试软件
- 软件设计师必考精华 - 面相对象
- Vue-5 路由参数的传递和获取(query 和 params),导航守卫和路由元信息,History模式
- 03-Python基础语法(下)
- Oracle—tablespace使用
- js 根据日期转换星期
- 极其简单的Python爬虫音乐
- [数字信号处理]IIR滤波器基础
- EPON和GPON的区别
- 【摘录】Ubuntu 10.10编译Android froyo可能需要注意的几个地方