mysql全局读写怎么锁_MySQL - 实战(5) - 全局锁和表锁

MySQL - 实战(5) - 全局锁和表锁锁的分类 - 根据加锁范围全局锁表锁行锁1 全局锁1.1 定义对整个数据库的实例加锁1.2 实现方式MySQL加全局锁的方式:Flush tables with read lock (FTWRL)解锁方式:unlock tablesflush tables with read lock命令行窗口退出后,则数据库会恢复为执行该命令之前的状态1.3 作用加全...
摘要由CSDN通过智能技术生成

MySQL - 实战(5) - 全局锁和表锁

锁的分类 - 根据加锁范围

全局锁

表锁

行锁

1 全局锁

1.1 定义

对整个数据库的实例加锁

1.2 实现方式

MySQL加全局锁的方式:

Flush tables with read lock (FTWRL)

解锁方式:

unlock tables

flush tables with read lock命令行窗口退出后,则数据库会恢复为执行该命令之前的状态

1.3 作用

加全局锁以后,整个数据库将处于只读状态,其他的线程的以下语句将会被阻塞:

数据更新语句(数据的增删改)

数据定义语句(包括建表、修改表结构等)

更新类事务的提交语句

1.4 使用场景

全库逻辑备份:

把整库每个表都 select 出来存成文本

FTWRL 确保没有其他线程对数据库更新,然后对整个库做备份

1.5 整库只读的问题

主库备份,备份期间不能执更新,业务停摆

从库备份,备份期间从库不能执行主库同步过来的 binlog,导致主从延迟

1.6 不加锁的问题

1.6.1 引发的问题

不同表之间的执行顺序不同进而备份的时间不同

某个表在时间差中进行了更新并且成功被备份,其关联表已备份完毕无法更新

数据不一致

视图逻辑不一致

1.6.2 针对视图逻辑的解决方法

在可重复读隔离级别下开启事务可以得到一致性视图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值