当咱们学习数据库事务的时候,咱们就知道了事务有4个特性,分别是原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。数据库
要么所有成功,要么所有失败,只要有一个失败,已经成功的都要回滚。
好比A帐号给B帐号转帐100块钱,正常状况是A扣款100块,而后B帐号增长100块。若是A这边扣款成功,B增长100块的时候失败了,这个时候,A扣款的操做就要回滚,也就是A也不扣款,B也没新增。并发
wikipedia包含这类描述学习
Any data written to the database must be valid according to all defined rules, including constraints, cascades, triggers, and any combination thereof.
数据的写入,必须符合咱们的定义的规则。好比咱们定义了金额是数值型,那么久不能传入字符串。咱们定义了金额不能小于0,那就不能赋值为负数(这个是咱们程序定义的)。spa
指并发中的事务,即使操做共同的数据时,每一个是事务是相互隔离的,相互不能影响的,每一个事务都有本身完整的事务空间。
隔离级别从低到高:3d
在事务1还没提交的时候,事务2能够读取到事务1更改的值。blog
上面例子能够看出,在同一个事务中,事务2读取的值是不同的。事务
图跟上面同样ip
串行化,就是全部的事务串行的执行,一个事务执行才,才能执行后面一个。ci
当一个事务读取到另外一个事务未提交的数据,就可能发生脏读。
参见读未提交的例子。字符串
在一次事务中,查询屡次的结果不是一致的,这代表发生不可重复读。
参见读已提交的例子。
在一次事务中,查询屡次的结果集不是一致的。
指事务一旦提交,就永久保留下来。系统崩溃、机器宕机,只要重启数据库,就能够读取到数据。