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

mysql的锁(全局锁)

文章目录

  • mysql按照锁的粒度分类
    • 全局锁
      • 概念:
      • 全局锁使用场景:
      • 全局锁备份案例:


mysql按照锁的粒度分类

全局锁

概念:

全局锁就是对整个数据库实例加锁。MySQL 提供了一个加全局读锁的方法,命令是:

Flush tables with read lock (FTWRL)

当你需要让整个库处于只读状态的时候,可以使用这个命令,之后其他线程的以下语句会被阻塞:数据更新语句(数据的增删改)、数据定义语句(包括建表、修改表结构等)和更新类事务的提交语句。,通俗的来说只能读取,不能写入,

解锁命令:

unlock tables

全局锁使用场景:

全局锁的典型使用场景是,做全库逻辑备份(mysqldump),对所有表进行锁定,从而获取一致性视图,保证数据的完整性,一致性

全局锁备份案例:

第一步:
使用命令

Flush tables with read lock

进行全局锁表;
在这里插入图片描述
全局锁表成功:当所有所有表被锁后,只能读,无法写:

多个session测试:

在这里插入图片描述

在这里插入图片描述

第二步:

当全局锁时,进行逻辑备份数据:
在这里插入图片描述
数据备份成功,

第三步:解锁

解锁命令:

unlock tables

在这里插入图片描述

解锁成功后,数据库就可以恢复正常的读写状态

特点:
数据库中加全局锁,是一个比较重的操作,存在以下问题:
1、如果在主库上备份,备份期间都不能执行更新。业务基本停止了

2、如果从库上备份,备份期间从库不能执行主库同步过来的二进制日志会导致主从延迟

在innodb存储引擎重,可以在备份的时候加上参数--single-transaction参数来完成不加锁的一致性数据备份

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

相关文章:

  • Spring Boot 整合开源 Tess4J库 实现OCR图片文字识别
  • 使用 Docker 和 Docker Compose 部署 Vue
  • 力扣linkedlist
  • springboot 启动原理、启动过程、启动机制的介绍
  • 大模型ChatGLM的部署与微调
  • 全球七家半导体工厂建设受阻:英特尔、三星、台积电等面临延期挑战
  • JavaScript错误;调试;“=”,“==”,“===”的区别
  • thinkphp6的请求
  • ant design vue 表格错位,表头错位
  • 【小白向】微信小程序解密反编译教程
  • Flutter基础 -- Dart 语言 -- 类抽象接口继承函数库
  • 【TB作品】msp430单片机,播放蜂鸣器音乐,天空之城
  • C语言(数据存储)
  • Linux shell编程学习笔记56:date命令——显示或设置系统时间与日期
  • Realsense的一些事情
  • CISCN 2023 初赛 被加密的生产流量
  • 初识C语言第三十天——设计三子棋游戏
  • ehcache3多级缓存应用
  • C# WinForm —— 24 Threading.Timer 组件介绍与使用
  • 03-07Java自动化之JAVA基础之循环
  • 【人工智能Ⅱ】实验8:生成对抗网络
  • vmware将物理机|虚拟机转化为vmware虚机
  • redis 高可用及哨兵模式 @by_TWJ
  • 封装tab栏,tab切换可刷新页面
  • JavaScript第八讲:日期,Math,自定义对象
  • php质量工具系列之phploc
  • 创建模拟器
  • 【Java】接口详解
  • 去掉el-table表头右侧类名是gutter,width=17px的空白区域(包括表头样式及表格奇偶行样式和表格自动滚动)
  • 3079. 求出加密整数的和