一个事务(transaction)中的全部操做,或者所有完成,或者所有不完成,不会结束在中间某个环节。事务在执行过程当中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务历来没有执行过同样。即,事务不可分割、不可约简。mysql
数据库容许多个并发事务同时对其数据进行读写和修改的能力,隔离性能够防止多个事务并发执行时因为交叉执行而致使数据的不一致。事务隔离分为不一样级别,包括读未提交(Read uncommitted)、读已提交(read committed)、可重复读(repeatable read)和串行化/序列化(Serializable)。sql
在事务开始以前和事务结束之后,数据库的完整性没有被破坏。这表示写入的资料必须彻底符合全部的预设约束、触发器、级联回滚等。数据库
事务处理结束后,对数据的修改就是永久的,即使系统故障也不会丢失。并发
一个事务读到了另外一个事务未提交的数据(回滚)ui
是不可重复读的一种特殊场景:当事务1两次执行SELECT ... WHERE检索必定范围内数据的操做中间,事务2在这个表中建立了(如INSERT)了一行新数据,这条新数据正好知足事务1的“WHERE”子句。事务
给人的感受就像出现了幻觉同样,以前明明不存在的数据,如今忽然出现了,被称为“幻读”。资源
第一个事务两次“读取”过程当中,另外一个事务对一样的数据进行更新,第一个事务两次读取结果不一致,因此被称为“不可重复读”。it
PS:io