MySQL为什么会有锁库锁表?(转)
1. 引言
人生就像数据库,有时会出现锁定状况,那么,当我们遇到MySQL的锁定问题时该如何处理呢?接下来,我们将深入探讨这个问题,打开MySQL的锁定大门。
2. 要求环境
在开始之前,我们需要为我们的探险做一些准备工作:
- 一台已安装MySQL的计算机(建议使用5.6版本及以上)
- 熟悉MySQL的基本操作(建议先完成MySQL基础学习)
3. 实战案例
现在,让我们一起来看看MySQL的锁定问题。
3.1 锁库(FOR UPDATE
)
在多用户共享MySQL数据库时,有时会出现多个用户同时修改同一条记录的情况,这时就需要用到行锁,以避免数据混乱。而锁库也是保护整个数据库的一种手段,能够控制同时只能有一个用户访问整个数据库。
我们来看一个简单的锁库实例,假设现在有两个用户同时在更新同一张表order中的数据,我们来看看会出现什么情况。
-- 用户1连接MySQL,更新order表中id为1的记录<br>BEGIN;<br>UPDATE order SET name='John' WHERE id=1;<br>-- 在未提交前使用select ... for update,申请锁定整个表<br>SELECT * FROM order FOR UPDATE;<br>