千家信息网

MySQL 5.5中LOCK TABLES和UNLOCK TABLES语句有哪些

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍了MySQL 5.5中LOCK TABLES和UNLOCK TABLES语句有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起
千家信息网最后更新 2026年11月02日MySQL 5.5中LOCK TABLES和UNLOCK TABLES语句有哪些

这篇文章主要介绍了MySQL 5.5中LOCK TABLES和UNLOCK TABLES语句有哪些,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

LOCK TABLES 可以为当前客户端会话的表加锁。表锁可以加到表或视图中。你需要具有LOCK TABLES权限和对表的查询权限。当执行LOCK TABLES语句时,表中的触发器也会被锁住。
表锁可以防止其他会话对表的读或写。持有写锁的会话可以执行DROP TABLE或TRUNCATE TABLE语句,持有读锁的会话,不允许执行DROP TABLE或TRUNCATE TABLE语句。

读锁(READ [LOCAL] lock)

持有锁的会话可以读取表,但是不能执行写入操作。

多个会话可以在同一时间获取相同表的读锁。

其他没有获取读锁的会话可以读取表中的内容。

LOCAL标识符可以使其他会话执行并发的INSERT语句。对于InnoDB表,READ LOCAL和READ具有同样的效果。

例子一:
--会话①
mysql> lock table t10 read;
Query OK, 0 rows affected (0.00 sec)

mysql> select * from t10;
+------+---------------------+
| name | email |
+------+---------------------+
| Neo | feelpurple@163.com |
| fire | real_neo@163.com |
| xxx | real_xiaomm@163.com |
+------+---------------------+
3 rows in set (0.00 sec)

--会话②,可以执行查询语句,对表的DML、DDL操作会处于阻塞状态,直到会话①表锁被释放
mysql> select * from t10;
+------+---------------------+
| name | email |
+------+---------------------+
| Neo | feelpurple@163.com |
| fire | real_neo@163.com |
| xxx | real_xiaomm@163.com |
+------+---------------------+
3 rows in set (0.00 sec)

mysql> insert into t10 values('Jason','real_xiaoyu@163.com');

--会话①
mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)

--会话②
mysql> insert into t10 values('Jason','real_xiaoyu@163.com');
Query OK, 1 row affected (2 min 7.82 sec)

当一个会话获取表锁后,这个会话只能访问被锁的这张表,直到表锁被释放为止。

例子二:
--会话①
mysql> lock table t10 read;
Query OK, 0 rows affected (0.00 sec)

mysql> select count(*) from t10;
+----------+
| count(*) |
+----------+
| 3 |
+----------+
1 row in set (0.00 sec)

mysql> select count(*) from t11;
ERROR 1100 (HY000): Table 't11' was not locked with LOCK TABLES
mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)

mysql> select count(*) from t10;
+----------+
| count(*) |
+----------+
| 3 |
+----------+
1 row in set (0.00 sec)

mysql> select count(*) from t11;
+----------+
| count(*) |
+----------+
| 1 |
+----------+
1 row in set (0.00 sec)

写锁(WRITE lock)

持有锁的会话可以对表执行读写操作。

只有获取锁的会话才能访问表。只有当锁释放掉,其他的会话才可以访问表。

当表被加上写锁的时候,其他对这张表的锁定请求会被阻塞。

--例子三:

--会话①
mysql> lock table t10 write;
Query OK, 0 rows affected (0.00 sec)

mysql> select count(*) from t10;
+----------+
| count(*) |
+----------+
| 4 |
+----------+
1 row in set (0.00 sec)

--会话②,对表的查询、DML、DDL操作都会处于阻塞状态,直到会话①表锁被释放
mysql> select * from t10;

--会话①
mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)

--会话②
mysql> select * from t10;
+---------------------+
| email |
+---------------------+
| feelpurple@163.com |
| real_neo@163.com |
| real_xiaomm@163.com |
| real_xiaoyu@163.com |
+---------------------+
4 rows in set (1 min 35.10 sec)

--会话①
mysql> lock table t10 write;
Query OK, 0 rows affected (0.00 sec)

--会话②的DML操作会处于阻塞状态
mysql> insert into t10 values('real_xiaolan@163.com');

--会话①
mysql> unlock tables;
Query OK, 0 rows affected (0.01 sec)

--会话②的DML操作成功
mysql> insert into t10 values('real_xiaolan@163.com');
Query OK, 1 row affected (35.04 sec)

--会话①,此时如果会话②不提交或回滚事务,则会话①再次执行LOCK TABLE语句会阻塞
mysql> lock table t10 write;

--会话②
mysql> rollback;
Query OK, 0 rows affected (0.00 sec)

--会话①
mysql> lock table t10 write;
Query OK, 0 rows affected (24.75 sec)

UNLOCK TABLES 会释放当前会话的表锁,也可以释放FLUSH TABLES WITH READ LOCK(这个命令会给MySQL中所有的数据库加锁)语句所加的全局只读锁。

感谢你能够认真阅读完这篇文章,希望小编分享的"MySQL 5.5中LOCK TABLES和UNLOCK TABLES语句有哪些"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

语句 阻塞 篇文章 例子 状态 查询 只有 权限 相同 成功 事务 价值 全局 兴趣 内容 再次 可以使 同时 命令 多个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 伟宏互联网科技 互联网和科技技术 科技互联网政务服务 互联网科技未来 有马互联网科技 深圳齐家互联网科技 深圳互联网科技怎么样 银川新华互联网科技学校地址 中盈科技互联网信息有限公司 南山科技园互联网公司有哪些 宝灵互联网科技有限公司 中国科技创新与世界互联网大会 银行科技岗属于互联网吗 梅州GM互联网络科技有限公司 互联网相关科技技术 国产互联网科技公司 互联网高科技行业有哪些企业 互联网科技手机排行榜 互联网科技机房 恒生科技互联网指数十大成分股 互联网科技保险 海南购全球互联网科技 华中科技有哪些互联网大佬 东莞新华互联网科技学校 洛阳共同富裕互联网科技有限公司 全球科技与互联网公司市值变化 兰石爱特工业互联网科技分公司 科技互联网公司两年变化 北京品多多互联网科技有限公司 武汉亿视互联网科技有限公司
0