日期:2014-05-16  浏览次数:20494 次

数据库学习四:mysql事务隔离级别

一.仅做参考

???? 这些知识网上都找得到,自己写出来,加深了解。

?

二.事务的四个特性?

  1. ?Atomic(原子性):事务由一个或者多个行为捆绑在一起组成。这些行为要么都成功,要么都不成功。当所有的行为都成功时,对应的事务就是成功的;当有一个行为失败了,对应的事务是失败的,并且要被回滚。
  2. Consistent(一致性):一旦一个事务结束了,无论成功失败,系统所处的状态和它的业务规则是一只的。用现实的话,就是数据不应该被破坏。
  3. Isolated(隔离性):事务允许对个用户操作同一数据,一个用户的操作不会和其它用户的操作产生混淆,任何事务都不可能看到来外一个处于不完整的事务。也就是,事务必须是隔离的。
  4. Durable(持久性):一旦事务完成,事务的结果应当持久化。

三.事务的隔离级别

  1. Dirty read(脏读):一个事务读取了另外一个事务改写但尚未提交的数据时,如果这些改变在稍后被回滚了,那么第一个事务读取的数据是无效的。
  2. Nonrepeatable read(不可重复读):一个事务执行两次相同的查询或者两次以上,由于另外一个事务在两次查询之间更新了这批数据,造成第一个事务两次查询结果不一样。
  3. Phantom read(幻读):一个事务读取几行记录后,由于另外一个事务插入了一些数据,第一个事务再次读取时,发现了一些原来没有的额外记录。

四.Mysql事务隔离级别

  1. Read uncommited(读取未提交的内容):?一个事务可以看到其它事务未提交的数据。可能导致脏读,不可重复读,幻读。
  2. Read commited(读取提交内容):一个事务只能看到其它事务提交的数据。可以防止脏读,但不可重复读和幻读依然存在。这个是大多数数据库默认的隔离级别,但不是mysql默认的。
  3. Repeatable read(可重复读):对相同字段多次读取结果是一致的。可以防止脏读和不可重复读,但幻读依然存在。这个是mysql数据库默认的隔离级别。
  4. Serializable(可串行化):强制事务排序,所有事务一个个执行。不会造成任何问题。