MySQL 入门(4):锁 (4)

这样做的目的是,防止在一个事务操作数据的时候,表结构被另一个事务给修改了。或者在某一个事务修改表结构的时候,不允许其他的事务操作数据。

4 库锁

顾名思义,库锁就是对整个数据库实例加锁。

MySQL提供了一个加全局读锁的方法,命令是Flush tables with read lock (FTWRL)。

使用过这个命令之后,相当于对全库增加了一个读锁,此时其他线程的数据更新语句(数据的增删改)、数据定义语句(包括建表、修改表结构等)和更新类事务的提交语句都会被阻塞。

全局锁的典型使用场景是,做全库逻辑备份。当然了,实现这个功能,我们也可以使用“可重复读”的事务隔离级别,做一次快照读,依然可以实现备份的功能。只不过,有些引擎并没有实现这个事务隔离级别。

写在最后

首先,谢谢你能看到这里。

在这篇文章中,尤其是间隙锁部分的内容,我没有查到太多的资料,所以很多内容都是我自己的理解。所以如果你发现了一些bad case,请你留言告诉我。又或者你发现了我哪里的理解是不对的,也请你留言告诉我,谢谢!

当然了,如果有哪里是我讲的不够明白的,也欢迎留言交流~

PS:如果有其他的问题,也可以在公众号找到我,欢迎来找我玩~

MySQL 入门(4):锁

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsfxyz.html