当前位置: 首页 > news >正文

Mysql 锁

目录

0 课程视频

1 概述

1.1 多用户 并发访问 -> 为了数据一致性(多用户)

1.2 全局锁 数据库所有表

1.3 表级锁 每次操作 锁整张表

1.4 行级锁 每次操作 锁对应行 

2 全局锁 ->锁后只读 -> 全库逻辑备份

2.1 阻塞DML /DDL 可DQL读

2.2 语法

2.2.1 加锁 flush tables with read lock ;

2.2.2 解锁 unlock tables ;

2.3 示例演示

2.3.1 全局锁备份 -> mysqldump -> cmd终端中执行

2.3.2 快照备份 不加锁 mysqldump --single

3 表级锁 ->InnoDB的 -> 锁锁兼容性

3.1 语法

3.1.1 加锁 locktables 表名 read/write; -> 其他用户 对应阻塞

3.1.2 解锁 unlock tables; ->用户解锁 ->断开客户端连接 

3.2 表共享读锁 -> 任何用户 让读 不让写

3.3 表独占写锁 -> 自己可读可写 别人读写阻塞

3.4 元数据锁 ->表结构锁

3.4.0 课程视频

3.4.1 系统自动控制

3.4.2 表有事务未提交(增删改查) ->不可修改表结构(字段增删改)

3.4.3 表结构说的类型表格说明 -> 锁与锁之间是否兼容

3.5 意向锁 -> 表锁前要检查是否有行锁 -> 提高检查效率

3.5.1 意向共享锁 -> 不兼容写锁

3.5.2 意向排他锁 -> 兼容意向锁

3.5.3 兼容性 -> 意向共享不容写 意向排他不排意向

3.5.4 查看意向锁及行锁 加锁情况

3.6 示例演示

3.6.1 系统自动加 意向共享锁

 3.6.2 系统自动加 意向排他锁 -> 意向排他 不排意向

4 行级锁 -> InnoDB引擎

4.1 结构原理 -> B+TREE ->叶子节点是id+row

4.2 行锁 -> 防止其他客户端同时 update / delete

4.2.1 共享锁 S

4.2.2 排他锁 X

4.2.3 行锁列表展示

4.3 间隙锁 -> 防止幻读 -> 锁住 叶子节点与节点间的间隙 ->防止insert

4.3.1 结构图

4.3.2 示例演示 -> 客户端一 自动加间隙锁 -> 防止客户端二 insert -> 防止幻读

4.4.3 非唯一索引 -> 把可能的范围都加锁 -> 间隙锁

4.4 临键锁 -> 行锁间隙锁的组合 -> 指 被锁索引和之前索引之间

4.4.1 总之就是 行锁及行锁与前索引 间隙的锁 -> 锁范围

 4.5 总结 ->间隙锁只锁 后间隙 ->临键锁 锁行 锁之前间隙


0 课程视频

https://www.bilibili.com/video/BV1Kr4y1i7ru/?p=121&spm_id_from=pageDriver&vd_source=ff8b7f852278821525f11666b36f180a

1 概述

1.1 多用户 并发访问 -> 为了数据一致性(多用户)

1.2 全局锁 数据库所有表

1.3 表级锁 每次操作 锁整张表

1.4 行级锁 每次操作 锁对应行 

2 全局锁 ->锁后只读 -> 全库逻辑备份

2.1 阻塞DML /DDL 可DQL读

2.2 语法

2.2.1 加锁 flush tables with read lock ;

2.2.2 解锁 unlock tables ;

2.3 示例演示

2.3.1 全局锁备份 -> mysqldump -> cmd终端中执行

2.3.2 快照备份 不加锁 mysqldump --single

mysqldump --single-transaction -uroot -p密码 库名 > 备份地址

3 表级锁 ->InnoDB的 -> 锁锁兼容性

3.1 语法

3.1.1 加锁 locktables 表名 read/write; -> 其他用户 对应阻塞

3.1.2 解锁 unlock tables; ->用户解锁 ->断开客户端连接 

3.2 表共享读锁 -> 任何用户 让读 不让写

3.3 表独占写锁 -> 自己可读可写 别人读写阻塞

3.4 元数据锁 ->表结构锁

3.4.0 课程视频

https://www.bilibili.com/video/BV1Kr4y1i7ru/?p=125&spm_id_from=pageDriver&vd_source=ff8b7f852278821525f11666b36f180a

3.4.1 系统自动控制

3.4.2 表有事务未提交(增删改查) ->不可修改表结构(字段增删改)

3.4.3 表结构说的类型表格说明 -> 锁与锁之间是否兼容

 ps: share_write 插入 更新 删除 操作可以所有客户端可以改表结构?

3.5 意向锁 -> 表锁前要检查是否有行锁 -> 提高检查效率

3.5.1 意向共享锁 -> 不兼容写锁

3.5.2 意向排他锁 -> 兼容意向锁

3.5.3 兼容性 -> 意向共享不容写 意向排他不排意向

3.5.4 查看意向锁及行锁 加锁情况

select object_schema,object_name,index_name,lock_type,lock_mode,lock_data from performance_schema.data_locks;

3.6 示例演示

3.6.1 系统自动加 意向共享锁

 3.6.2 系统自动加 意向排他锁 -> 意向排他 不排意向

4 行级锁 -> InnoDB引擎

4.1 结构原理 -> B+TREE ->叶子节点是id+row

4.2 行锁 -> 防止其他客户端同时 update / delete

4.2.1 共享锁 S

4.2.2 排他锁 X

4.2.3 行锁列表展示

 

4.3 间隙锁 -> 防止幻读 -> 锁住 叶子节点与节点间的间隙 ->防止insert

4.3.1 结构图

4.3.2 示例演示 -> 客户端一 自动加间隙锁 -> 防止客户端二 insert -> 防止幻读

4.4.3 非唯一索引 -> 把可能的范围都加锁 -> 间隙锁

4.4 临键锁 -> 行锁间隙锁的组合 -> 指 被锁索引和之前索引之间

4.4.1 总之就是 行锁及行锁与前索引 间隙的锁 -> 锁范围

 4.5 总结 ->间隙锁只锁 后间隙 ->临键锁 锁行 锁之前间隙

http://www.lryc.cn/news/64436.html

相关文章:

  • 基于ssm的论坛系统的设计与实现【附源码】
  • Vue中的事件修饰符
  • 如何保证Redis和数据库的一致性
  • Ubantu docker学习笔记(八)私有仓库
  • 【五一创作】网络协议与攻击模拟-01-wireshark使用-捕获过滤器
  • 网络-IP地址(嵌入式学习)
  • 一文介绍Linux EAS
  • 【五一创作】【Midjourney】Midjourney 连续性人物创作 ① ( 通过垫图方式生成类似图像 )
  • 牛客刷题错题记录【03】
  • maven-gpg-plugin gpg禁用交互式输入密码 免密码输入 设置默认密码 关闭pinentry-qt输入 passphrase
  • 急需国产化替代的重要的工程软件有哪些?
  • 计算机组成原理 4.2.1存储芯片连接
  • 这份【互联网项目全流程表】,实在是泰裤辣!!!
  • JAVA医院管理云HIS统计报表子系统、系统管理字系统功能实现
  • 5.Java中抽象类和接口
  • 中国平安将在2023年出现转机,复苏才刚刚开始
  • CUDA编程(六):代码分析与调试
  • 身份鉴别解读与技术实现分析(1)
  • 为什么说7.38万的比亚迪海鸥比仰望更重要
  • 【LLM】低成本部署大语言模型, 并且还能达到部署在GPU上差不多的效果
  • Doris(25):Doris的函数—Bitmap函数
  • 简单分享微信小程序上的招聘链接怎么做
  • 【英语】大学英语CET考试,翻译部分(修饰后置,定语从句,插入语,多动句,无主句)
  • 设计模式——代理模式
  • Shiro-721---漏洞复现
  • Linux【模拟实现C语言文件流】
  • APK文件结构
  • RabbitMQ死信队列延迟交换机
  • 武忠祥老师每日一题||不定积分基础训练(六)
  • C语言结构体详解