博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL实战06の锁
阅读量:5076 次
发布时间:2019-06-12

本文共 866 字,大约阅读时间需要 2 分钟。

 

1. 锁的用处?

MySQL的锁就是为了处理并发问题

 

2. 锁的分类

全局锁:对整个数据库实例加锁。加全局锁命令:Flush tables with read lock;(FTWRL) 加全局锁后,数据更新语句,数据定义语句和更新类事务语句都会被阻塞。适用场景:做全库逻辑备份,就是把每个表selsct出来存成文本。 备份为什么加全局锁?不加锁会有什么问题? 假设维护极客时间的购买系统,关注用户的账户余额和用户课表。 备份系统备份得到的库不是一个逻辑时间点,这个视图是逻辑不一致的(拿到一致性视图,我们需要事务)
MySQL自带的备份工具是mysqldump,使用参数-single-transaction,导库会启动一个事务来确保拿到一致性视图。 这个方法只适用于所有的表使用事务引擎的库,MyISAM不支持事务,是需要FTWRL命令加锁
既然全库只读,使用set global readonly=true的方式呢? (1)有些系统用readonly用作其它逻辑,比如判断是主从库 (2)异常处理上的差异。 使用FTWRL命令,客户端异常MySQL会自动释放这个全局锁整个库可恢复正常更新状态; 若使用readonly,客户端异常数据库会一直保持readonly状态,整个库长时间不可写,风险较高。
表级锁表锁lock tables ...read/writeInnoDB支持更细粒度的行锁,一般不使用表锁命令。元数据锁不需要显示使用,在访问一个表的时候会被自动加上,保证读写的正确性。(1)读锁之间不互斥,多个线程可同时对一张表的数据进行增删改查。(2)读写锁之间,写锁之间是互斥的,保证变更表结构操作的安全性。如何安全的给小表加字段?在alter table 语句里面设定等待时间,在等待时间内拿到MDL写锁最好,拿不到也不影响后续业务语句,先放弃,可以再重试命令获取。

 

总结

理解锁的概念,分类和用途

原文地址:

转载于:https://www.cnblogs.com/yangjiming/p/10172665.html

你可能感兴趣的文章
【POJ2699】The Maximum Number of Strong Kings(网络流)
查看>>
spring boot配置跨域
查看>>
BZOJ 1996 合唱队(DP)
查看>>
进击吧!阶乘——大数乘法
查看>>
安卓学习资料推荐-25
查看>>
Mysql数据库备份和还原常用的命令
查看>>
关于退出当前页面在火狐的一些问题
查看>>
【项目实施】项目考核标准
查看>>
spring-aop AnnotationAwareAspectJAutoProxyCreator类
查看>>
经典入门_排序
查看>>
Redis Cluster高可用集群在线迁移操作记录【转】
查看>>
二、spring中装配bean
查看>>
VIM工具
查看>>
javascript闭包
查看>>
@Column标记持久化详细说明
查看>>
创建本地yum软件源,为本地Package安装Cloudera Manager、Cloudera Hadoop及Impala做准备...
查看>>
mysql8.0.13下载与安装图文教程
查看>>
站立会议08(冲刺2)
查看>>
url查询参数解析
查看>>
http://coolshell.cn/articles/10910.html
查看>>