进阶-5.锁

1.概述

在这里插入图片描述

  • 分类

按锁的粒度分类:

  1. 全局锁:锁住数据库中所有表
  2. 表级锁:每次操作锁定整张表
  3. 行级锁:每次操作锁定对应的行数据

2.全局锁

  • 介绍

全局锁就是对整个数据库加锁,加锁后整个实例就处于就读状态,后续的DML的写语句,DDL语句,已经更新操作的事务提交语句都将被阻塞。

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

在这里插入图片描述

mysql> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)

mysql> use test;
Database changed
mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)
C:\Users\Tracy>mysqldump -u root -p123456 test >D:/test.sql
  • 特点

数据库加全局锁,是一个比较重的操作,存在以下问题:

  1. 如果在主库备份,那么在备份期间都不能执行更新,业务基本停摆。
  2. .如果在从库备份,那么在备份期间从库不能执行主库同步过来的二进制日志,会导致主从延迟。

在innoDB引擎中,我们可以备份时加上参数–single-transaction参数来完成不加锁的一致性数据备份。

C:\Users\Tracy>mysqldump --single-transaction -u root -p123456 test >D:/test.sql

3.表级锁

3.1 介绍

每次操作锁住整张表,锁粒度大,发生锁冲突概率最高,并发度最低。应用在MyISAM、InnoDB、BDB等存储引擎中。

对于表级锁,主要分为以下三类:
1.表锁
2.元数据锁(meta data lock ,MDL)
3.意向锁

3.2 表锁

表共享读锁 (read lock)
表独占写锁 (write lock)

  • 语法:

加锁:lock tables 表名 …read/write。
释放锁:unlock tables /客户端端口连接。
在这里插入图片描述

3.3 元数据锁

在这里插入图片描述

在这里插入图片描述

3.4意向锁

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

mysql> select object_schema,object_name,index_name,lock_type,lock_mode,lock_data from performance_schema.data_locks;

4.行级锁

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值