mysql事务隔离级别
事务的特性
-
原子性:指处于同一个事务中的多个操作是不可分割的。
-
一致性:当数据库成功事务提交时,事务中的所有操作都成功,就说数据库处于一致性状态。
-
隔离性:同一时刻只允许一个事务操作同一数据,多个事物之间互不干扰
-
持久性:事务一旦执行提交,就应该被持久化
概念
-
脏读:读取到了其他事物未提交的数据
-
幻读:一个事务两次读取中,后一次查询看到了前一次查询没有看到的行(新insert), 指一个事务中后一次查询读取到了另外事务中提交的 insert 的数据
-
不可重复读(虚读):一个事务两次读取中,后一次查询看到了前一次查询没有看到的行(新update), 指一个事务中后一次查询读取到了另外事务中提交的 update 的数据
事务隔离级别
*注: √表示会产生,× 表示不会产生
隔离级别 | 脏读(Dirty Read) | 不可重复读(NonRepeatable Read) | 幻读(Phantom Read) |
---|---|---|---|
未提交读(Read uncommitted | √ | √ | √ |
已提交读(Read committed) | × | √ | √ |
可重复读(Repeatable read默认) | × | × | √ |
可串行化(Serializable) | × | × | × |
级别越高,数据越安全,但性能越低 , mysql 默认事务隔离级别为Repeatable read.
修改数据库默认隔离级别
set session transaction isolation level read uncommitted;