事务

来源:互联网 发布:地瓜干 知乎 编辑:程序博客网 时间:2024/06/03 18:00

1、概念
事务是一个或多个数据库操作的集合,具有ACID四个特性。
SQL语句:

START TRANSACTION.../*操作集合*/COMMIT/ROLLBACK

2、ACID
原子性(Atomic)、一致性(Consistency)、隔离性(Isolation)和持久性(Durabiliy),简称为ACID。

  1. 原子性:保证事务中的所有操作全部执行或者全部不执行。
  2. 一致性:事务操作前后始终保持数据的一致性,不管事务成功与否。
  3. 隔离性:在并发操作数据时,不同的事务有各自的数据空间,其操作不会对对方产生干扰。一个事务与其它事务的隔离程度称为隔离级别,不同隔离级别对应不同的干扰程度,隔离级别越高,数据一致性就越好,但并发性越弱。
  4. 持久性:表示事物操作完成之后,对数据库的影响是持久的,即使数据库因故障而受到破坏,数据库也应该能够恢复。通常的实现方式是采用日志。

3、隔离级别

  • 只读:只读取数据,不修改数据。
    多个只读同一个数据的事务,可以并发执行;
    但多个写同一数据的事务不能并发执行。

设置事务只读:

 SET TRANSACTION READ ONLY 

设置事务可写,默认选项:

SET TRANSACTION READ WRITE
  • 脏读:读取未提交的事务所写的数据。
    针对隔离级别Read Uncommitted
  • 幻读:事务执行时数据库插入操作带来的数据。
    针对隔离级别Reaptable Read

四个隔离界别:

1.Read Uncommitted
允许读取脏数据。

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

2.Read Committed
禁止读取脏数据,即每次读取的都是事务已经提交的数据。

SET TRANSACTION ISOLATION LEVEL READ COMMITTED

3.Reaptable Read
即重复查询得到相同数据。但是同一个查询的第二次执行以及后续的执行也有可能出现幻读。

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ

4.Serializable,默认选项
即一个时刻只有一个事务执行,相互之间没有重叠。

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
原创粉丝点击