mybatis mysql 行锁_第六节:select语句的锁行和锁表功能

本文介绍了如何在MyBatis和MySQL中利用`for update`实现行锁和表锁。通过示例展示了按主键查询时加的是行锁,而非主键则锁定整个表,并探讨了InnoDB行锁依赖于索引实现的特点,强调正确使用索引以避免锁冲突,提升并发性能。
摘要由CSDN通过智能技术生成

前言

本文选自网站小册子《My家双雄:深度学习MySQL与MyBatis》:http://www.mybatis.cn/324.html。此书从数据访问存储层为入口,将延伸到分布式、高并发方面的关键技术。希望这本书能对每一个做Java Web开发的读者带来帮助,也欢迎大家提出更多的修改建议。

1、插入测试数据

drop table if exists person;

CREATE TABLE person (

id int primary key,

name VARCHAR ( 20 )

);

insert into person values(1,'A');

insert into person values(2,'B');

insert into person values(3,'C');

2、事务设置

查看是否是自动提交,如下所示:

select @@autocommit;

然后,取消SQL语句的自动提交功能

set autocommit=0;

3、Select的表锁和行锁

默认情况下,select语句是不会对数据加写锁的,也就是不会阻止写入(update delete),通过使用 for update可以对数据加写锁。

3.1 行锁

如果是按照主键查询的话,那么加的是行锁。请看下面的验证过程。

第一步:在第一个MySQL连接窗口中,执行:

begin;

select * from person where id =1 for up

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值