0
点赞
收藏
分享

微信扫一扫

IDC报告:国内游戏云市场,腾讯云用量规模位列第一

Yaphets_巍 2023-12-18 阅读 36

MySQL锁

锁解决的问题

锁的分类

全局锁(只读)

具体使用

1.添加全局锁

语法:flush tables with read lock;

flush tables with read lock;

添加全局锁后,不能使用任何增、删、改操作,可以使用查询操作,更新操作被阻塞

2.执行数据备份,利用MySQL提供的工具mysqldump

语法:mysqldump -uroot -proot 数据库名 > 具体存入脚本名称.sql

mysqldump -uroot -proot 数据库名 > 具体存入脚本名称.sql

3.备份之后,解锁指令(释放全局锁)

语法:unlock tables;

unlock tables;

演示:

添加全局锁
flush table with read lock; 

数据备份

释放全局锁
unlock table;

全局锁缺点(力度太大)

 

表级锁 

1.表锁 

读锁(read):只能读,不能写

写锁(write):既能读,也能写

具体用法:

2.元数据锁 

3.表锁:意向锁

意向锁判断依据是是否兼容,如果是可兼容的锁就可以直接加上,如果是排他锁则被阻塞,知道行锁释放

意向锁的使用

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

 行级锁

1.行级锁的分类

2. 行锁/记录锁

行锁的类型

在InnoDB引擎中实现了两种类型的行锁

 

 锁模式兼容性

行级锁定实现方式——必定通过索引实现

 常见SQL语句执行时的加锁情况

行锁只能锁定当前行所在的一条数据,其他数据不被锁住 

行锁只有索引存在时才会生效,否则会生成表锁

间歇锁/临键锁

唯一索引等值查询 

非唯一索引等值查询(尽量避免) 

唯一索引范围查询 

加锁规则: 

锁总结

什么是MySQL锁:

锁分为三种:全局锁、表级锁、行级锁

举报

相关推荐

0 条评论