欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

InnoDB行锁是通过给索引上的索引项加锁来实现!

程序员文章站 2022-03-03 20:03:55
...

1、数据表结构如下:只有一个主键索引(ID)


InnoDB行锁是通过给索引上的索引项加锁来实现!

 

2、先在客户端A执行下面的更新语句

START TRANSACTION;
UPDATE zx_news_dtl t set t.sweb_desc='CSDN'  where t.ssource_name='CSDN';

3、再在客户端B执行以下的更新语句

UPDATE zx_news_dtl t set t.sauthor='liqin2233' where t.id='1174576125793153026';

当在执行B语句时,会一直处于执行状态,这是为什么了????

这里就要看MySql InnoDB行锁的加锁机制了:
1、INNODB表是索引组织的表,主键是聚集索引,非主键索引都包含主键信息。
2、INNODB默认是行锁。
3、INNODB行锁是通过给索引项加锁来实现的,即只有通过索引条件检索数据,InnoDB才使用行级锁,否则将使用表锁。

因为A的语句是用ssource_name为条件,在字段没有创建索引,所以执行A语句时,实时是做了表锁,从而阻塞B的执行。

 

相关标签: Mysql 数据库锁