03-事务的四大特性和隔离级别

1、数据库事务

1.1、事务的四大特性

原子性

  • 即不可分割性,事务要么全部被执行,要么就全部不被执行

一致性

  • 事务的执行使得数据库从一种正确状态转换成另一种正确状态

隔离性

  • 在事务正确提交之前,不允许把该事务对数据的任何改变提供给任何其他事务

持久性

  • 事务正确提交后,其结果将永久保存在数据库中,即使在事务提交后有了其他故障,事务的处理结果也会得到保存

1.2、隔离级别

read Uncommited(读未提交)

  • 在该隔离级别,所有的事务都可以读取到别的事务中未提交的数据,会产生脏读问题,在项目中基本不怎么用,安全性太差

read commited(读已提交)

  • 这是大多数数据库默认的隔离级别,但是不是MySQL的默认隔离级别;这个隔离级别满足了简单的隔离
    • 要求:一个事务只能看见已经提交事务所做的改变,所有会避免脏读问题
  • 由于一个事务可以看到别的事务已经提交的数据,于是随之而来产生了不可重复读和虚读等问题

repeatable read(可重复读)

  • 这是MySQL的默认隔离级别,它确保了一个事务中多个实例在并发读取数据的时候读取到一样的数据;不过理论上,这会导致另一个棘手的问题:幻读(Phantom Read)
    • 简单的说,幻读指当用户读取某一范围的数据时,另一个事务又在该范围内插入了新行,当用户在读取该范围的数据行时,会发现有新的"幻影行"
  • InnoDB和Falcon存储引擎通过多版本并发控制(MVCC,Multiversion Concurrency Control)机制解决了该问题

serializable(可串行化)

  • 事务的最高级别,它通过强制事务排序,使之不可能互相冲突,从而解决幻读问题。简言之,它是在每个读的数据行上加上共享锁。在这个级别,可能导致大量的超时现象和锁竞争,一般为了提升程序的吞吐量不会采用这个
posted @ 2022-08-02 13:53  OnlyOnYourself-Lzw  阅读(66)  评论(0编辑  收藏  举报