SET TRANSACTION
SET TRANSACTION
语句用于在 GLOBAL
或 SESSION
的基础上更改当前的隔离级别,是 SET transaction_isolation ='new-value'
的替代语句,提供 MySQL 和 SQL 标准的兼容性。
语法图
SetStmt:
TransactionChar:
IsolationLevel:
示例
mysql> SHOW SESSION VARIABLES like 'transaction_isolation';
+-----------------------+-----------------+
| Variable_name | Value |
+-----------------------+-----------------+
| transaction_isolation | REPEATABLE-READ |
+-----------------------+-----------------+
row in set (0.00 sec)
mysql> SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW SESSION VARIABLES like 'transaction_isolation';
+-----------------------+----------------+
| Variable_name | Value |
+-----------------------+----------------+
| transaction_isolation | READ-COMMITTED |
+-----------------------+----------------+
row in set (0.01 sec)
mysql> SET SESSION transaction_isolation = 'REPEATABLE-READ';
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW SESSION VARIABLES like 'transaction_isolation';
+-----------------------+-----------------+
| Variable_name | Value |
+-----------------------+-----------------+
| transaction_isolation | REPEATABLE-READ |
+-----------------------+-----------------+
row in set (0.00 sec)
MySQL 兼容性
- TiDB 支持仅在语法中将事务设置为只读的功能。
- 不支持隔离级别
READ-UNCOMMITTED
和SERIALIZABLE
。 - 隔离级别
REPEATABLE-READ
在技术上属于快照隔离(Snapshot Isolation)。在 TiDB 中称为REPEATABLE-READ
是为了和 MySQL 保持一致。
另请参阅
- SET [GLOBAL|SESSION]
- Isolation Levels
看完两件小事
如果你觉得这篇文章对你挺有启发,我想请你帮我两个小忙:
- 把这篇文章分享给你的朋友 / 交流群,让更多的人看到,一起进步,一起成长!
- 关注公众号 「方志朋」,公众号后台回复「资源」 免费领取我精心整理的前端进阶资源教程