MySQL支持对MyISAM和MEMORY存储引擎的表进行表级锁定,对BDB存储引擎的表进行页级锁定,对InnoDB存储引擎的表进行行级锁定。

锁表

LOCK TABLES: 可以锁定用于当前线的表。如果表被其他线程锁定,则当前线程会等待,直到可以获取所有锁定为止.

UNLOCK TABLES: 可以释放当前线程获得的任何锁定。当前线程执行另一个 LOCK TABLES时,或当与服务器的连接被关闭时,所有由当前线程锁定的表被隐含地解锁.

语法

mysql> ? lock
Name: 'LOCK'
Description:
Syntax:
LOCK TABLES
    tbl_name [[AS] alias] lock_type
    [, tbl_name [[AS] alias] lock_type] ...

lock_type:
    READ [LOCAL]
  | [LOW_PRIORITY] WRITE

UNLOCK TABLES

事务控制

默认情况下, MySQL是自动提交事务的.

更详细的帮助, 可以查看:

mysql> ? start transaction

  • 开启事务: start transactionbegin

  • 提交或回滚: commit, rollback

  • commit and chain: 立即启动一个新的事务, 并且和刚才的那个事务具有相同的隔离级别.

  • release: 断开和客户端的连接.

  • 如果定义了相同名字的 SAVEPOINT,则后面定义的SAVEPOINT 会覆盖之前的定义。

分布式事务 XA

查看具体的帮助:mysql> ? xa