mysql中lock_mysql中的锁lock

本文详细介绍了数据库中的锁机制,包括表级锁、行级锁和页面锁的特点与应用场景。对比了不同锁类型之间的优缺点,并深入探讨了事务的隔离级别及其对数据一致性和并发性的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

2ff34e647e2e3cdfd8dca593e17d9b0a.png

锁的分类

1. 表级锁(MyISAM):开销小,加锁快

不会出现死锁

锁定力度大,发生锁冲突概率最高,并发度低

表共享读锁、表独占写锁

MyISAM在执行select语句时,会自动给相关表加读锁;

执行insert/update/delete 语句时,自动加写锁;LOCK tables table1 read local, table2 read local;

select ***

select ***

Unlock tables;

local:

锁升级:

2. 行级锁(InnoDB):开销大,加锁慢

会导致死锁

锁定粒度最小,发生锁冲突最低,并发度也最高

事务ACID

原子性

一致性

隔离性

持久性

事务带来的问题

更新丢失

脏读

不可重复度

幻读

事务的隔离级别加锁

MVCC多版本控制隔离级别/读数据一致性及允许的并发副作用读数据一致性脏读不可重复读幻读未提交读(Read uncommitted)最低级别,只能保证不读取物理上损坏的数据是是是

已提交度(Read committed)语句级否是是

可重复读(Repeatable read)事务级否否是

可序列化(Serializable)最高级别,事务级否否否

查看系统行级锁占用show status like 'innodb_row_lock%';

共享锁(S)、排他锁(X)

显式加锁:共享锁(S):SELECT * FROM table_name WHERE ... LOCK IN SHARE MODE

排他锁(X):SELECT * FROM table_name WHERE ... FOR UPDATE

意向共享锁(IS)、意向排他锁(IX)

这两种锁都是表锁

注意:只有通过索引条件检索数据,InnoDB才会使用行级锁,否则,InnoDB将使用表锁!

间隙锁

3. 页面锁:> 开锁、加锁时间介于表锁和行锁之间,

>

> 会导致死锁

>

> 粒度介于两者之间,并发度一般

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值