IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> mysql 锁机制 -> 正文阅读

[大数据]mysql 锁机制

1. 全局锁

做全量备份的时候使用, 保证表与表之间的一致性

  • flash tables with read lock

使用全局锁锁定所有数据库的所有表, 这时会阻塞其他所有的DML 和 DDL 操作

, 这样可以避免备份过程中的数据不一致,接下来可以执行备份, 最后用unlock tables 来解锁

给所有的表加了锁 , 可以查看数据, 修改会被阻塞。

但这属于比较重的操作, 可以使用-- single -transaction

参数来完成不加锁的一致性备份

  • mysqldump --single–transaction -u root -p 数据库名 >1.sql dump 转储

2. 表级锁

2.1 共享锁和 排他锁

共享锁(读锁) :加锁之后别的事务还可以读

排他锁(写锁): 加锁之后别的事务不能操作

表锁的力度比较粗 ,在InnoDB 引擎很少使用, 支持的并发数第低

语法 加锁: lock tables 表名 read /write , 解锁 unlock tables

2.2 元数据锁

  • 加元数据锁的集中情况

    • lock tables read /write 类型为 SHARED_ONLY 和 SHARED_NO_READ_WRITE
    • alter table 类型为 EXCLUSIVE 与其他DML 都互斥
    • select , select…lock lock in SHARED mode 为 SHARED_WRITE
    • insert , update , delete select fro update 类型为 SHARED_WRITE
  • DML的元数据锁之间不互斥

  • 查看元数据锁 sql 语句

  • select object_type , object_schema , object_name, lock_type, lock_druation from performance_shcema.metadata_locks
    

2.3 IS (意向共享锁) 与 IX(意向排它锁)

主要是为了避免写操作(DML 数据操作语言) 与 表锁冲突

  • DML 主要是为行加锁, 为了不让表锁不用检查每行数据是否加锁, 加意向锁(当前锁的上一层)来减少表锁的判断, 意向锁之间不会互斥
  • 有DML 语句添加, 例如 select…lock in shared mode 会加IS 锁, insert , update, select for update 会加 IX 锁
  • 查看共享锁的命令
select  object_schema , object_name,index_name, lock_type,lock_mode, lock_data from performance_shcema.data_locks

3. 行级锁

  • 行锁 在 RC(读已提交)下, 锁住的是行, 防止其他事务对此进行update 或者 delete
  • 间隙锁 在RR(可重复读)下, 锁住的是间隙 ,防止其他事务在这个间隙insert产生幻读.
  • 临键锁 在RR下, 锁住的是前面间隙+行, 特定条件下可以优化为行锁
    锁示例

… 待完善

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-01-24 10:57:59  更:2022-01-24 10:59:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 14:55:33-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码