mysql 锁相关知识

这篇具有很好参考价值的文章主要介绍了mysql 锁相关知识。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

mysql 锁相关知识


  • 数据库级别
    • 全局锁:锁整个数据库,不可写,只读
      • 数据备份时,如果不加该锁,则可能导致数据不一致。
      • 加锁:flush tables with read lock;
      • 解锁 unlock tables;
  • 表级别
    • 表锁:
      • 表共享读锁(read lock):其他客户端不可写,只读
      • 表独占写锁(write lock):其他客户端不可读写
      • 加锁:lock tables 表名… read/write。
      • 释放锁:unlock tables / 客户端断开连接 。
    • 元数据锁:元数据-> 表结构数据
      • 为防止在数据更新时,对元数据更新,系统自己加的锁。

    查看锁情况 select object_type,object_schema,object_name,lock_type,lock_duration from performance_schema.metadata_locks;

    • 意向锁: 如果表有行锁,会自动加意向锁,为了减少表锁时候对每行检测是否具有行锁
      • 意向共享锁(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;

  • 行级别
    • 行锁: 锁定单个行记录的锁,防止其他事务对此行进行update和delete。在RC、RR隔离级别下都支持。
      • 共享锁(S):允许一个事务去读一行,阻止其他事务获得相同数据集的排它锁。[SELECT … LOCK IN SHARE MODE 加S]
      • 排他锁(X):允许获取排他锁的事务更新数据,阻止其他事务获得相同数据集的共享锁和排他锁。 [INSERT,DELETE,UPDATE,SELECT … FOR UPDATE都会加X]
      • InnoDB的行锁是针对于索引加的锁,不通过索引条件检索数据,那么InnoDB将对表中的所有记录加锁,此时就会升级为表锁。

    查看锁情况: select object_schema,object_name,index_name,lock_type,lock_mode,lock_data from performance_schema.data_locks;

    • 间隙锁: 锁定索引记录间隙(不含该记录),确保索引记录间隙不变,防止其他事务在这个间隙进行insert,产生幻读。在RR隔离级别下都支持。可多个事务共存间隙锁。
    • 临键锁: 行锁和间隙锁组合,同时锁住数据,并锁住数据前面的间隙Gap。在RR隔离级别下支持。
      • 向右遍历时最后一个值不满足查询需求时,next-key lock 退化为间隙锁。[锁最后一个值到无穷的间隙,防止事务过程中有数据插入]

      InnoDB的B+树索引,叶子节点是有序的双向链表,所以最右侧没有数据说明,找不到符合条件的数据,所以要锁空白记录

refer to https://juejin.cn/post/7208019379828621373文章来源地址https://www.toymoban.com/news/detail-471186.html

到了这里,关于mysql 锁相关知识的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Mysql数据库 第13章】MySQL的事务、事务的隔离级别、事务的保存点

    💖Spring中的创建对象的三种方式、第三方资源配置管理详细描述及使用(XML版完结篇) 💖Spring中的bean的配置、作用范围、生命周期详细描述及使用(XML版上篇) 💖

    2023年04月20日
    浏览(48)
  • 数据库相关知识

    一.1 数据库   与Sybase不同,一个用户就对应于一个数据库。   create user CBMAIN   identified by \\\"sunline\\\"      default tablespace CBMAIN_DATA -- 表空间   temporary tablespace CBMAIN_TEMP; -- 临时表空间   一.2 表空间 表空间由一个或多个物理文件组成,一个表空间只能用于一个数据库。   create

    2024年02月02日
    浏览(23)
  • 数据库相关理论知识(有目录便于直接锁定相关知识点+期末复习)

    一,数据模型,关系型数据模型,网状模型,层次模型 1. 数据库模型 是用来描述和表示现实世界中的事物、概念以及它们之间的关系的工具, 但是并不是越专业越好,还要平衡它的模型的复杂性、通用性和成本效益等因素 。数据模型按不同的应用层次可以分为 三个层次 ,

    2024年03月16日
    浏览(42)
  • MySQL数据库相关

    1、内联,左外联,右外联,全连接,交叉连接的区别 2、什么是视图?以及视图的使用场景有哪些? 视图是一种虚拟的表,具有和物理表相同的功能 只暴露部分字段给访问者,所以就建一个虚表,就是视图。 查询的数据来源于不同的表,而查询者希望以统一的方式查询,这

    2024年02月09日
    浏览(26)
  • MySQL数据库中,在读已提交和可重复读这两个不同事务隔离级别下幻读的区别

    在正式开始之前,先简单回顾一下并发事务存在的问题以及事务的隔离级别等内容。 1.1 并发事务存在的问题 当两个或者两个以上事务同时开启去处理同一个表的数据时,可能会存在以下的问题: 丢失修改 脏读 不可重复读 幻读 丢失修改 丢失修改是指当两个或多个事务更新

    2024年02月02日
    浏览(44)
  • MySQL数据库(database)相关操作

    修改my.ini配置文件,可修改MySQL默认的字符集. 修改[mysql]选项组下的default_character_set的值可以同时改变character_set_client, character_set_connection, character_set_database的值 修改[mysql]选项组下的character_set_server的值可同时改变character_set_database, character_set_server的值 在MySQL命令行通过以下命令

    2024年02月05日
    浏览(41)
  • MySQL相关的SQL语句、数据库、数据表、字段、类型

    1、 SQL 语句不区分大小写。 SQL语句 用途 描述 mysql -u root -p 连接 MySQL 在命令行窗口中输入 mysql -u root -p 命令,回车,然后输入 MySQL 密码(不要忘记了密码,找回麻烦),再回车就连接上 MySQL 了。最初都是使用 root 用户登录,工作中不能一直使用 root 用户登录。因为 root 权限太

    2024年02月13日
    浏览(69)
  • Mysql数据库技术知识整理

    Mysql的知识点目录 重点:架构,引擎,索引,锁机制,事务机制,日志机制,集群,调优 3、Mysql索引 索引概念 覆盖索引: 条件列和结果列都在索引中 索引下推: 查询会先过滤条件列,然后回表查数据 最左前缀匹配: 查询条件会从最左开始匹配索引列 回表:经过索引查询后,不

    2024年02月11日
    浏览(24)
  • MySQL 课后习题解析与笔记——学生选课数据库相关操作

    这篇文章记录一下帮助粉丝朋友一起学习解决的 MySQL 课后习题,内容很基础,都是基础的数据库语句和操作,内容是关于学生选课数据库的一些操作。这里我用 MySQL 和 Navicat 完成这些题目。 题目如下: 现有学生选课数据库:Student(Sno,Sname,Sage,Ssex,Sdept)、 Course(Cno

    2024年02月08日
    浏览(69)
  • 【MySQL】数据库基本知识小结

    哈喽大家好,我是阿Q,今天我们来总结一下【MySQL】 入门的必备知识点吧~ 数据库 :DataBase 简称 DB,就是信息的集合或者说数据库是由数据库管理系统管理的数据的集合。 数据库管理系统 :DataBase Management System 简称 DBMS,是一种操纵和管理数据库的大型软件,通常用于建立

    2024年02月09日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包