mysql主流Innodb存储引擎---事务锁分析

Repeatable Read(可重读)MySQL中InnoDB默认的隔离级别。

悲观锁

为了防止并发导致数据库操作受其他线程操作数据库影响,一般基于数据库的悲观锁来加锁操作。

从sql语句来看,为了抢占独占锁,两种方式。

1、更新语句加锁

begin;开启事务
insert into a...
update a set ..
delete from a...
commit; 提交事务

2、查询语句加锁
begin;开启事务
select .. from a where .. for update
commit; 提交事务

从性能来看,这两种悲观锁会因为高并发而导致竞争激烈,性能较差。


乐观锁

update a set ... where id = 1;

Rows matched: 1  Changed: 0  Warnings: 0

先假设没有同时抢占资源,等更新后查看结果是否符合假设的预期。从Changed: 0来看说明不符合预期。

乐观锁对于出现的这种场景,就需要重试来解决,这也是乐观锁的缺点。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值