MySQL中的锁2——表级锁

2.表级锁

表级锁的粒度也较大,作用整张表,容易造成锁冲突,并发度低。

2.1表锁

分类:

表共享读锁(read lock)

表独占写锁(write lock)

语法:

加锁:lock tables 表名 read/write;

释放锁:unlock tables/关闭客户端

锁住特点:

读锁:所有进程可读,所有进程不可写

写锁:当前上锁进程可读写,其余进程不可读写

2.2元数据锁

这里的元数据,可以简单理解为就是一张表的表结构。 也就是说,某一张表涉及到未提交的事务时,是不能够修改这张表的表结构的。避免dml和ddl语句发生冲突。

元数据锁不用显示操作,mysql执行语句时自动加的。主要注意exclusive就是元数据的排他锁(写锁,修改元数据的时候加),平常增删改查的时候就是元数据共享锁。

查看元数据锁:

select object_type,object_schema,object_name,lock_type,lock_duration from

performance_schema.metadata_locks ;

2.3意向锁

加表锁的时候,需要每行遍历行锁,防止冲突,效率很低。innodb引入意向锁,来减少加表锁时的检查。

【意向锁,我的理解就是行锁在表级的一个标志,加表锁的时候需要查看意向锁,防止加的表锁和已经有的行锁冲突】

分类:

意向共享锁(IS) 与表共享读锁兼容,与表排他写锁互斥。

【我的理解是本质是行锁和 表锁的关系。行锁的读锁会和表读锁是兼容的,都允许读数据。行读锁和表写锁肯定互斥,读锁不允许写数据】。

意向排他锁(IX)与表读锁,写锁都互斥。

【我理解和上面一样,说明行锁是写锁,那自然不能再读写】

意向锁之间不会互斥。

【我的理解是因为操作的是不同行数据】

语法:

IS:select语句后面加 lock in share mode。

IX:增删改查语句后面加for update。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值