欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Mysql中的锁

程序员文章站 2022-06-02 12:52:23
...

锁的作用

避免资源征用的机制功能

资源征用:多个任务同时使用一个资源,对资源产生征用

数据库中,记录(数据)就是资源,不同客户端对记录的CRUD操作就是任务。

在某个任务使用资源时,标识出来,其他任务就不能同时操作,等待或者放弃。

流程

先尝试加锁,如果锁定成功,去使用资源,否则等待或放弃

锁的类型

不同类型的锁,导致并发操作是不一样的。

共享锁,读锁,S-lock:
在需要进行读操作时,增加的锁定类型。会共享读操作,其他任务也可以多操作,阻塞写操作,但是不能执行写操作。

排他锁,独占锁,写锁,X-lock:
在需要执行写操作时增加锁定类型,会独占该资源,其他任何既不能读,也不能写。

MySQL在执行任何的SQL会自动增加

锁粒度(范围)

在MySQL中,锁被实现了不同的粒度。
一旦加锁,锁定的记录数量不同。

表级,table-level:操作会锁定整张便,无论时共享锁还是独占锁。
行级,row-level:操作会锁定操作的记录

同时实现了表级和行级锁定

MySQL中锁的相关语法

表锁:无论myisam还是innodb,都是表锁

加锁:lock tables table-name1,table-name2|READ|WRITE;
解锁:Unlock tables;

行锁:对于innodb,支持行锁:

对查询的记录增夹共享锁
select * from table where LOCK IN SHERE MODE;
对查询的记录增减排他锁
select * from table FOR UPADTE;