基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
锁表
更新时间:2026-07-15 15:16:39
表锁是最基本的锁定策略,它锁定整张表,在任意时刻只允许一个会话对该表进行读写操作。您可以通过 LOCK TABLES 语句锁定表。
数据库是一个多用户使用的共享资源。当多个用户并发地存取数据时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。加锁是实现数据库并发控制的一个非常重要的技术。为了确保资源的安全性(也就是数据完整性和一致性)才引申出锁机制。利用其锁机制来实现事务间的数据并发访问及数据一致性。
前提条件
要锁定的表必须在用户自己的 Schema 中,或者用户必须具有 LOCK TABLES 权限。
操作示例
为 test1 表设置读锁,为 test2 表设置写锁。
obclient> LOCK TABLES test1 as t1 READ LOCAL, test2 as t2 LOW_PRIORITY WRITE;
Query OK, 0 row affected
- 以只读方式锁住表,该表只能被
select,不能被修改。如果在锁表时,该表上存在事务,则lock语句挂起,直到事务结束。多个会话可以同时对表执行该操作。 - 以读写方式锁住表,
lock table的会话可以对表做修改及查询等操作,而其他会话不能对该表做任何操作,包括select也要被阻塞
更多 LOCK TABLES 语句的介绍,请参见 LOCK TABLES。