MySQL锁--01---读锁写锁表锁及案例

Posted 高高for 循环

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL锁--01---读锁写锁表锁及案例相关的知识,希望对你有一定的参考价值。

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


锁的分类

读锁、(共享锁)、 S锁

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

写锁 、(排它锁) 、X锁

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

表锁

表级锁分析–建表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;

手动增加表锁

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

查看表上加过的锁

show open tables;

释放表锁

unlock tables;

加读锁案例

lock table mylock read




加写锁案例

lock table mylock write



总结

表级锁的2种形式

MALSAM引擎

MALSAM引擎在执行查询语句前(select),-----会自动给涉及的所有表加读锁

在执行增删改操作之前,-------会自动给涉及的表加写锁

  • 对MyISAM表的读操作(加读锁),不会阻塞其他进程对同一表的读请求,但会阻塞对同一表的写请求。只有当读锁释放后,才会执行其它进程的写操作。
  • 对MyISAM表的写操作(加写锁),会阻塞其他进程对同一表的读和写操作,只有当写锁释放后,才会执行其它进程的读写操作。

小结:

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

以上是关于MySQL锁--01---读锁写锁表锁及案例的主要内容,如果未能解决你的问题,请参考以下文章

MySQL中的读锁和写锁(InnoDb行锁表锁 MyISAM共享读锁 MyISAM独占写锁)

MySQL死锁案例分析

锁--02---锁的分类1----读锁(S锁)写锁(X锁)

MySQL锁机制和主从复制

MySQL 进阶 锁 -- MySQL锁概述MySQL锁的分类:全局锁(数据备份)表级锁(表共享读锁表独占写锁元数据锁意向锁)行级锁(行锁间隙锁临键锁)

锁--01---并发问题的解决方案概述