mysql数据库之表级锁

表级锁,每次操作锁住整张表。锁定粒度大,发生所冲突的概率最高,并发度最低。应用在myisam、innodb、bdb等存储引擎中。

一、表级锁分类。

1、表锁

2、元数据锁(meta data lock,MDL)

3、意向锁

二、表锁。

分类

1、表共享读锁(read lock)

 释放前 

 释放后

 

2、表独占写锁(write lock)

释放前

 释放后

 语法

1、加锁:lock tables 表名... read/write。

读锁,可以读,不可以写

写锁,本地客户端可以写可以读,其他客户端不能读不能写,释放后可以

 

2、释放锁:unlock tables 或者客户端断开连接。

三、元数据锁(meta data lock,MDL)。

MDL加锁过程是系统自动控制,无需显示使用,在访问一张表的时候会自动加上。MDL锁主要作用是维护表元数据的数据一致性,在表上有活动事务的时候,不可以对元数据进行写入操作。为了避免DML与DDL冲突,保证读写的正确性。

 在mysql5.5中引入了MDL,当对一张表进行增删改查的时候,家MDL读锁(共享锁),当对表结构进行变更操作的时候,家MDL写锁(排他锁)。

                        

 对应SQL  锁类型  说明 
lock tables xxx read/writeshared_read_only/shared_no_read_write
select/select... lock in share modeshared_read与shared_read/shared_write兼容,与exclusive互斥
insert、update、delete、select... for updateshared_write与shared_read/shared_write兼容,与exclusive互斥
alter table ...与其他的MDL互斥

1、共享锁,可以读可以写

 

2、修改表结构,未提交

 3、提交后可更新表结构

4、查看元数据锁

select object_type,object_schema,object_name,lock_duration from performance_schema.metadata_locks;

 查询

只有执行增删改查的时候,才会有对应的元数据锁,alter table改表结构的时候阻塞,提交事务即可执行。

四、意向锁。

 为了避免DML在执行时,家的行锁与表锁的冲突,在innodb中引入了意向锁,使得表锁不用检查每行数据是否加锁,使用意向锁来减少表锁的检查。

1、演示。

没有意向锁

 有意向锁

 2、分类。

意向共享锁(IS):由语句select ... lock in share mode添加。

意向排他锁(IX):由insert、update、delete、select ... for update添加。

3、兼容性。

意向共享锁(IS):与表锁共享锁(read)兼容,与表锁排他锁(write)互斥。

意向排他锁(IX):与表锁共享锁(read)和表锁排他锁(write)都互斥,意向锁之间不会互斥。

4、查看意向锁及行锁的加锁情况。

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

5、演示。

为这一行加行锁,为表加意向锁,查询语句后加上lock in share mode,是为这一行加共享锁,为整张表家意向共享锁。

 IS和读锁兼容,和写锁互斥,提交后释放

 执行update语句,自动为这一行加行锁,为表加上意向排他锁

 

互斥,提交事务后即可释放

 主要解决innodb引擎中加的行锁和表锁的冲突问题。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小格子衬衫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值