Mysql 锁

2022/6/19 2:20:16

本文主要是介绍Mysql 锁,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、读锁、写锁

1、 表锁

读锁也称为共享锁、写锁称为排他锁

读锁会阻塞其他进程写操作,写锁会阻塞其他进程读和写操作

(加上写锁,当前线程可以继续查询)

tips:如果是常用写操作的场景,不建议使用myisam引擎,以写优先,会给数据库表加写锁,导致其他线程无法访问,降低并发量。

2、 行锁(偏向Innodb、开销大、会出现死锁;并发度高)

问题:无索引行锁升级为表锁,行锁锁的是索引

索引失效:如果类型是varchar,没加单引号,会自动类型转换,就会导致索引失效,会造成行锁,变成了表锁。

tips:

select xxx for update 锁定某一行后,其他操作被阻塞,相当于加了个行锁。

 

3、间隙锁:

当使用范围条件而不是相等条件检索数据,并请求共享或排他锁时,innodb会给符合条件的已有数据记录的索引加锁,对于键值在条件范围内并不存在的记录,叫做间隙(gap)

Innodb会对这个间隙加锁,这种锁机制就是所谓的间隙锁(next-key锁)

可以防止一定程度上的幻读。

 

 

 

 

 

查看最近的锁数量等

show profiles查看整个查询的每一步过程,进行排查。

 

mysql主从复制

复制基本原则:

1、每个slave只能有一个唯一的id

2、每个slave只有一个master

3、每个master可以有多个slave

 

 

slave会从master读取binlog来进行数据同步

 

 

mysql主从复制分为三步:

1、mysql将改变记录写到二进制日志(binlog),这些记录过程的日志叫做binary log events;

2、slave将master的binary log events拷贝到它的中继日志(relaylog)

3、salve重做中继日志事件,将改变应用到自己的数据库中。mysql复制是异步且是串行化。

 



这篇关于Mysql 锁的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程