加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

对于MySQL你必须要了解的锁知识

发布时间:2019-04-19 00:15:40 所属栏目:编程 来源:佚名
导读:一、媒介 MySQL 的锁凭证范畴可以分为全局锁、表锁、行锁,个中行锁是由数据库引擎实现的,并不是全部的引擎都提供行锁,MyISAM 就不支持行锁,以是文章先容行锁会以InnoDB引擎为例来先容行锁。 二、全局锁 MySQL 提供全局锁来对整个数据库实例加锁。 语法

我们假设有2个事宜A和事宜B,事宜获取到了共享锁,锁住了表中的某一行,这一行只能读,不能写,此刻事宜B要申请整个表的写锁。假如事宜B申请乐成,那么必定是可以对表中全部的行举办写操纵的,那么必定与A获取的行锁斗嘴。数据库为了停止这种斗嘴,就会举办斗嘴检测,那么怎样去检测呢?有两种方法:

  • 判定表是否已经被其他事宜用表级锁锁住。
  • 判定表中的每一行是否被行锁锁住。

判定表中的每一行必要遍历全部记录,服从太差,以是数据库就用第一种方法去做斗嘴检测,也就是用到了意向锁。

总结

本文首要从MySQL的加锁范畴来说明白MySQL的锁,MySQL按照加锁范畴可以分为全局锁、表锁、行锁。全局锁和表锁是MySQL本身实现,行锁都是由引擎层面去实现。InnoDB下的行锁首要分为共享锁和排他锁。共享锁哀求后,行只能读,共享锁之间不互斥。排他锁获取后能更新和删除行,排他锁与其他锁都互斥。最后我在行锁的基本上提到了意向锁,意向锁首要暗示正在锁住行可能即将锁住行,为了在锁斗嘴检测中进步服从。虽然InnoDB下尚有其他锁,好比间隙锁,记录锁,Next-Key锁等,这些都不在本文的切磋范畴之内,若有乐趣的同窗可以自行研究。

【编辑保举】

  1. MySQL常识系统——索引
  2. 2019年4月数据库风行度排行:Oracle一连增添股价获新高
  3. 1000行MySQL进修条记,不怕你不会,就怕你不学!
  4. 一次诡异的线上数据库的死锁题目排查进程
  5. 记着:永久不要在MySQL中行使UTF-8
【责任编辑:庞桂玉 TEL:(010)68476606】
点赞 0

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读