13518219792

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

数据库篇:MySQL锁详解

前言

sql事务的执行,如果需要锁定数据进行更新操作,则必定离不开锁。

创新互联成立于2013年,先为睢阳等服务建站,睢阳等地企业,进行企业商务咨询服务。为睢阳企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

1.共享锁和排他锁

排他锁(X锁),当前事务给记录上锁后(insert update delete),可以进行读写,其他事务不可以加任何锁。

共享锁(S锁),是指当前事务给一条记录上锁后,其他事务也可以给当前记录加共享锁。共享锁只用于锁定读,如需要更新数据,是不允许的。

2.表锁

针对数据库表的锁,又称为表

表级别的 AUTO_INC 锁

在为表某列添加 AUTO_INCREDMENT 属性,之后插入数据时可以不指定该字段,系统会自动为它赋值,此时获取自增值是需要 AUTO_INC 锁锁定的。

3.行锁 Record Lock

何为意向锁

如果存在行锁的情况,想给表加锁,怎么办?遍历查看表有没有行锁,太浪费时间了。此时意向锁登场啦!

有了意向锁,则不需要遍历数据也可以直接判断是否可以给表加锁。

4.间隙锁 Gap Lock

mysql 在 repeatable read 隔离级别解决幻读的,有两种实现方式。一是靠 MVCC 方案解决;二是加锁方案解决。然而在事务加锁时,记录是不存在的,是无法加行锁的。则需要靠间隙锁(gap lock)实现。

5.行锁+间隙锁 Next-Key Lock

6.加锁场景(repeatable read 隔离级别加锁 sql,忽略二级索引的加锁操作)

select from

select for update

select lock in share mode

insert、update 和 delete 语句的加锁情况


当前标题:数据库篇:MySQL锁详解
网址分享:http://cdbrznjsb.com/article/djocooe.html

其他资讯

让你的专属顾问为你服务