指事务的一个不可再分割的工作单位,事务中的操作要么都发生,要么都不发生
指再事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。
对数据进行修改的所有并发事务是彼此隔离的,表明事务必须是独立的,它不应该以任何方式依赖或影响其他事务。
修改数据的事务可在另一个使用相同数据的事务开始之前访问这些数据,或者在另一个使用相同数据的事务结束之后访问这些数据。
指不管系统是否发生故障,事务处理的结果都是永久的
一旦事务被提交,事务的效果会被永久地保留在数据库中。
脏读(读取未提交数据)
脏读是读到了别的事务回滚前的脏数据。
不可重复读(前后多次读取,数据内容不一致)
一个事务内两个相同的查询却返回了不同数据。
幻读(前后多次读取,数据总量不一致)
一个事务对一个表中的数据进行了修改,这种修改这种修改涉及到表中的全部数据行。同时,对另一个事务也修改这个表中的数据,这种修改时向表中插入一行新数据。那么,操作前一个事务的用户会发现表中还有没有修改的数据行,就好像发生了幻觉一样。
丢失更新
两个事务同时读取同一条记录,A先修改记录,B也修改记录(B不知道A修改过),B提交数据后B的修改结果覆盖了A的修改结果。
read uncommitted:
读取尚未提交的数据(不解决脏读)
read committed:
读取已提交的数据(可以解决脏读)
repeatable read:
重读读取(可以解决脏读 和 不可重复读)
serializable:
串行化(可以解决脏读、不可重复读和虚读),相当于锁表
COMMIT 会提交事务,并使已对数据库进行的所有修改成为永久性的。
回滚会结束用户的事务,并撤销正在进行的所有未提交的修改;
设置全局事务隔离
查看会话事务隔离级别
设置会话事务隔离