数据库--行锁

行锁:

偏向InnoDB存储引擎,开销大,加锁慢,会出现死锁,锁定粒度最小,发生锁冲突的概率最低,并发度最高。
InnoDB与MyISAM有两个最大的不同的特点:

  1. 支持事务
  2. 采用行级锁
事务具有四个属性–ACID
  1. 原子性:要么全执行,要么一个都不执行
  2. 一致性:在事务开始和完成时,数据都必须保持一致
  3. 隔离性:事务执行过程是独立的,不受外部条件影响的
  4. 持久性:事务完成之后,他对数据的修改是永久的,
并发事务的缺点:
  1. 更新丢失
  2. 脏读
  3. 不可重复读
  4. 幻读
    在这里插入图片描述
查看当前数据的事务隔离级别可以使用SQL语句:
SHOW VARIABLES LIKE 'tx_isolation'; 

在这里插入图片描述
好吧,上网查了查是要先设置才会显示结果,看的视频可能已经设置过了,所以才会出现empty set可能。

实例分析:

表格建立:

CREATE TABLE test_innodb_lock(
a INT(11),
b VARCHAR(16)
)ENGINE=InnoDB;
INSERT INTO test_innodb_lock VALUES(1,'b2');
INSERT INTO test_innodb_lock VALUES(3,'3');
INSERT INTO test_innodb_lock VALUES(4,'4000');
INSERT INTO test_innodb_lock VALUES(5,'5000');
INSERT INTO test_innodb_lock VALUES(6,'6000');
INSERT INTO test_innodb_lock VALUES(7,'7000');
INSERT INTO test_innodb_lock VALUES(8,'8000');
INSERT INTO test_innodb_lock VALUES(9,'9000');
INSERT INTO test_innodb_lock VALUES(1,'b1');
CREATE index test_innodb_a_ind ON test_innodb_lock(a);
CREATE index test_innodb_lock_b_ind ON test_innodb_lock(b);

查看表格情况:
在这里插入图片描述

首先关闭自动提交

SET autocommit=0;//刚刚开始我也不知道这个什么意思,但是通过视频里的实例讲解我大概懂了,操作如下

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

但是如果操作不同条的记录是不会出现阻塞的,是可以操作的。
而且如果出现索引失效的情况,行锁会升级表锁。
在这里插入图片描述

还有一种状况是,间隙锁危害!

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

那么我们如何锁定一行呢????

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值