# TiDB 事务隔离级别

__*事务隔离级别*__
__*READ COMMITTED*__
__*REPEATABLE READ*__

+ TiDB 支持以下事务隔离级别:
  + `READ COMMITTED`: Dirty Read 不可能发生
  + `REPEATABLE READ`: Dirty Read, Non-Repeatable Read, Phantom Read 都不可能发生
+ 悲观事务模式支持:
  + `REPEATABLE READ`
  + `READ COMMITTED`
+ 乐观事务模式只支持:
  + `REPEATABLE READ`
+ 设置会话隔离级别: `SET transaction_isolation='read-committed|repeatable-read';` 
------------------------------------------------------------------------------
当事务隔离级别为可重复读时,只能读到该事务启动时已经提交的其他事务修改的数据,未提交的数据或在事务启动后其他事务提交的数据是不可见的。对于本事务而言,事务语句可以看到之前的语句做出的修改。

对于运行于不同节点的事务而言,不同事务启动和提交的顺序取决于从 PD 获取时间戳的顺序。

由于历史原因,当前主流数据库的 Read Committed 隔离级别本质上都是 Oracle 定义的一致性读隔离级别。TiDB 为了适应这一历史原因,悲观事务中的 Read Committed 隔离级别的实质行为也是一致性读。
