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

mysql InnoDB 行锁的实现 -Oracle是对每行数据加锁实现

程序员文章站 2022-06-02 12:27:53
...

通过索引项加锁实现

  1.只有条件走索引才能实现行级锁

  2.索引上有重复值,可能锁住多个记录

  3.查询有多个索引可以走,可以对不同索引加锁

  4.是否对索引加锁实际上取决于mysql的执行计划

自增主键做条件更新,性能最好

测试验证:

1.创建t2表,在a上添加索引

create table t2(a int,b int,key idx1(a));

2.在t2表上插入数据:

insert into t2 values(1,1);
insert into t2 values(1,5);

在a连接中开启事务并对数据进行加锁:

 

mysql InnoDB 行锁的实现 -Oracle是对每行数据加锁实现

在b连接中开启事务也加锁

mysql InnoDB 行锁的实现 -Oracle是对每行数据加锁实现

 会发现b连接中加锁操作阻塞,最终事务被回滚。

 

这里简单引申一下:如果彻底没有索引的话,那应该就是锁表了。这里不做演示。

相关标签: mysql mysql index

上一篇: InnoDB的索引

下一篇: 数据库优化