当前位置:   article > 正文

MySQL锁--01---读锁、写锁、表锁及案例_数据库加写锁

数据库加写锁

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


mysql锁

锁概述

在这里插入图片描述

锁分类

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

读锁、(共享锁)、 S锁

针对同一份数据,多个读操作可以同时进行而不会互相影响

写锁 、(排它锁) 、X锁

当前写操作没有完成之前,它会阻断其他读锁和写锁

表锁

在这里插入图片描述

如何加表锁

在这里插入图片描述

加读锁 : lock table table_name read;
加写锁 : lock table table_name write;
  • 1
  • 2

释放表锁

unlock tables;

手动增加表锁

lock table 表名字1 read(write),表名字2 read(write),其它;

查看表上加过的锁

show open tables;

在这里插入图片描述

show status like 1 ‘Table_locks%’;

在这里插入图片描述
在这里插入图片描述

加读锁—案例

表级锁分析–建表SQL

create table mylock(
 id int not null primary key auto_increment,
 name varchar(20)
)engine myisam;


insert into mylock(name) values('a');
insert into mylock(name) values('b');
insert into mylock(name) values('c');
insert into mylock(name) values('d');
insert into mylock(name) values('e');


select * from mylock;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

加读锁

lock table mylock read

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

加写锁案例

lock table mylock write

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结

表级锁的2种形式

在这里插入图片描述

MALSAM引擎

MALSAM引擎在执行查询语句前(select),-----会自动给涉及的所有表加读锁
在执行增删改操作之前,-------会自动给涉及的表加写锁
  • 对MyISAM表的读操作(加读锁),不会阻塞其他进程对同一表的读请求,但会阻塞对同一表的写请求。只有当读锁释放后,才会执行其它进程的写操作。
  • 对MyISAM表的写操作(加写锁),会阻塞其他进程对同一表的读和写操作,只有当写锁释放后,才会执行其它进程的读写操作。

小结:

读锁会阻塞写,但是不会堵塞读。而写锁则会把读和写都堵塞

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/码创造者/article/detail/959891
推荐阅读
相关标签
  

闽ICP备14008679号