[内容] MariaDB & MySQL 事务

内容一:事务的作用

事务的作用是保护数据的安全性

内容二:MariaDB & MySQL 事务的 4 大特性

2.1 原子性(Atomicity)

一系列操作被看作一个事务,这个事务里面的所有操作要么全部失败,要么全部成功,如果在操作的过程中出现中断,则立刻进行 rollback

2.2 一致性(Consistency)

一系列操作被看作一个事务,在事务开始前和结束后,整个库的完整逻辑约束不能被打破,例如:一个人向另一个人转账,不能出现一个人转账成功另一个人没有收到转账,或者一个人转账失败另一个人收到转账的情况

2.3 隔离性(Isolation)

主要解决并发的情况,避免不同的人,在相同的时间,查看到的数据的不一致性,避免以下情况的发生:
1) 脏读:一个事务读取了另一个事务更新、提交并撤销的数据,导致此事务看到的数据是错误的
2) 不可重复读:一个事务多次读取了另一个事务多次更新并提交的数据,导致此事务看到的数据是来回变化的
3) 幻读:一个事务在批量修改所有数据,但是在修改的过程中另一个事务又往里面插入了数据,导致此事务在修改完成之后,意外发现还有一条数据没有修改

2.4 持久性(Durability)

事务结束后,所有更新都将被保存,不能回滚

内容三:MariaDB & MySQL 事务隔离级别

3.1 MariaDB & MySQL 事务隔离级别的特点

事务隔离级别脏读不可重复读幻读
读未提交(read-uncommitted)
不可重复读(read-committed)
可重复读(repeatable-read)
串行化(serializable)

3.2 MariaDB & MySQL 默认的事务隔离级别

可重复读 repeatable-read

3.3 查看目前所使用的事务隔离的方法

MariaDB [(none)]> select @@tx_isolation;
+-----------------+
| @@tx_isolation  |
+-----------------+
| REPEATABLE-READ |
+-----------------+
1 row in set (0.001 sec)

(补充:这里以查看 MariaDB 目前所使用的事务隔离为例)