MySQL 基础教程

MySQL 高级教程

MySQL SQL 语句

MySQL 笔记

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/mysql-transaction-and-lock.html

MySQL 事务和锁相关语句全解


MySQL 通过 SET autocommit、START TRANSACTION、COMMIT 和 ROLLBACK 语句支持本地事务(基于 client 的 session);除此之外,XA 事务支持 MySQL 分布式事务。

START TRANSACTION、COMMIT 和 ROLLBACK 语句

下列语句提供了对事务的控制:

START TRANSACTION
    [transaction_characteristic [, transaction_characteristic] ...]

transaction_characteristic: {
    WITH CONSISTENT SNAPSHOT
  | READ WRITE
  | READ ONLY
}

BEGIN [WORK]
COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]
SET autocommit = {0 | 1}

START TRANSACTIONBEGIN 语句开启新的事务。

COMMIT 语句提交当前事务,使其变更永久生效。

ROLLBACK 回滚当前事务,取消其更改。

SET autocommit 禁用或启用当前会话的默认自动提交模式。

SAVEPOINT、ROLLBACK TO SAVEPOINT 和 RELEASE SAVEPOINT 语句

InnoDB 引擎支持 SQL 语句,SAVEPOINT、ROLLBACK TO SAVEPOINT、RELEASE SAVEPOINT 和 可选项 WORK 关键字进行回滚。

SAVEPOINT identifier
ROLLBACK [WORK] TO [SAVEPOINT] identifier
RELEASE SAVEPOINT identifier

LOCK TABLES 和 UNLOCK TABLES 语句

MySQL 允许 client 通过会话显性地锁表和解锁表,加锁用 LOCK 关键字,解锁用 UNLOCK 关键字。

LOCK TABLES
    tbl_name [[AS] alias] lock_type
    [, tbl_name [[AS] alias] lock_type] ...

lock_type: {
    READ [LOCAL]
  | [LOW_PRIORITY] WRITE
}

UNLOCK TABLES

SET TRANSACTION 语句

SET TRANSACTION 语句指定表的事务特性,多个事务特征用逗号进行隔开;每个事务特性包括事务隔离级别或访问模式。事务的隔离级别作用于 InnoDB 引擎,访问模式表示事务是以读/写还是只读模式运行。

SET [GLOBAL | SESSION] TRANSACTION
    transaction_characteristic [, transaction_characteristic] ...

transaction_characteristic: {
    ISOLATION LEVEL level
  | access_mode
}

level: {
     REPEATABLE READ
   | READ COMMITTED
   | READ UNCOMMITTED
   | SERIALIZABLE
}

access_mode: {
     READ WRITE
   | READ ONLY
}

XA 事务

InnoDB 存储引擎支持 XA 事务,MySQL XA 事务实现是基于 X/Open CAE “分布式事务处理:XA 规范”。

XA {START|BEGIN} xid [JOIN|RESUME]

XA END xid [SUSPEND [FOR MIGRATE]]

XA PREPARE xid

XA COMMIT xid [ONE PHASE]

XA ROLLBACK xid

XA RECOVER [CONVERT XID]

 

事务是并发控制的基本单位。MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的 ...
MULTI、EXEC、DISCARD和WATCH是Redis事务相关的命令。 ...
在计算机科学中,锁(lock)或互斥(mutex)是一种同步机制,用于在有许多执行线程的环境中强制对资源的访问限制。锁旨在强制实施互斥排他、 ...
在Java中,有多种锁的实现方式来实现并发控制,这些锁提供了不同的特性和适用场景。###synchronized关键字`synchroniz ...
MySQL IF 语句可以用作表达式用,也可以作为流程控制语句;作为表达式时,它类似三目运算符,而作为流程控制语句时,它其实是条件表达式。 ...