事务的概念



概念

事务指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部失败。


事务的特性

  • 原子性(Atomicity)

    指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。

  • 一致性(Consistency)

    事务必须使数据库从一个一致性状态变换到另一个一致性状态。

  • 隔离性(Isolation)

    事务的隔离性实在多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务间要相互隔离。

  • 持久性(Durability)

    持久性指一个事务一旦被提交,它对数据库的改变就是持久性的,就下来几遍数据库发生故障也不应该对其有任何影响。


事务隔离性专题

如果不考虑事务的隔离性,会出现以下问题:

  • 脏读

    指一个线程中的读取了另一个线程中未提交的数据。

  • 不可重复读

    指一个一个线程中的事务读取到了另一个线程中提交的update数据。

  • 幻读

    指一个线程中的事务读取到了另一个线程中提交的insert数据。


隔离级别

  • 1.READ UNCOMMITTED(默认)

    脏读、不可重复读、幻读都有可能发生。

  • 2.READ COMMITTED

    防止脏读的发生,不可重复读、幻读可能发生。

  • 4.REPEATABLE READ

    防止脏读、不可重复读的发生,幻读可能发生。

  • 8.SERIALIZABLE

    都可以防止。

注:级别越高,数据越安全,但性能越低。

mysql中隔离级别操作

  • 查看
    1
    select @@tx_isolation
  • 更改(开启事务之前)