mysql锁介绍

InoDB引擎的行锁:

一、共享锁

SELECT语句 LOCK IN SHARE MODE;

也叫读锁。针对同一条数据,多个事务读取操作可以同时加锁而互不影响 ,但是不能修改数据记录。

例:

事务1执行:SELECT * FROM student WHERE id=1 LOCK IN SHARE MODE;

事务2也能顺利执行:SELECT * FROM student WHERE id=1 LOCK IN SHARE MODE;

但是注意:如果查询条件不采用带索引的列,则会提升为表锁。

例如:

事务1执行:SELECT * FROM student WHERE score=99 LOCK IN SHARE MODE;(score列无索引)

事务2不能再执行上述查询操作。

UPDATE类的语句均不能同时执行。

二、排他锁

SELECT语句 FOR UPDATE;

加锁的数据,不能被其他事务加锁查询或修改(普通查询不影响)。

MyISAM引擎的锁:

一、读锁

加锁:LOCK TABLE 表名 READ;
解锁(将当前会话所有的表进行解锁):UNLOCK TABLES;

所有连接只能读取数据,不能修改(包含自身连接)。

二、写锁

加锁:LOCK TABLE 表名 WRITE;
解锁(将当前会话所有的表进行解锁):UNLOCK TABLES;

其他连接不能查询和修改数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值