内容概述:

  1. 数据库事务机制概念

  2. 数据库事务机制的特性

  3. 数据库事务生命周期

  4. 数据库事务提交方式

  5. 数据库事务隔离级别

1. 数据库事务机制概念

数据库服务中为了保证线上交易的“和谐”,便加入了”事务“工作机制,保证交易行为的安全性

2. 数据库事务机制的特性

A - 原子性

表示事务生命周期中,所有的操作行为必须都成功,要么都失败。

C - 一致性

一致性表示一个事务发生前,中,后数据都最终保持一致,即读和写都要保证一致性。

I - 隔离性

隔离性表示一个事务操作数据行的时候,不会受到其他事务的影响,主要利用锁机制来保证隔离性

D - 持久性

持久性表示一旦事务进行了提交,即可永久生效

可以在数据库服务异常时,将内存中未落盘的数据进行恢复。

3. 数据库事务生命周期

begin DML;DML;DML commit --- 完整生命周期

begin DML;DML;DML rollback --- 完整生命周期

4. 数据库事务提交方式

方式一:自动提交方式

mysql> select @@autocommit;
+--------------+
| @@autocommit |
+--------------+
|            1 |
+--------------+
-- 此时设置为1,表示事务会自动提交。

方式二:手动提交方式

mysql> select @@autocommit;
+--------------+
| @@autocommit |
+--------------+
|            0 |
+--------------+
-- 此时设置为0,表示事务会手动提交;需要手动输入commit数据才会落盘。

5. 数据库事务隔离级别

数据隔离机制作用:避免多个事务操作冲突性。

隔离级别:

级别一:RU (READ-UNCOMMITED)表示读未提交 低

一个事务还没有提交,它做的变更就能被别的事务看到。

事务A-begin 事务B-begin

update a=10 - > 20 select a ? =20

问题:脏读 不可重复读 幻读

级别二:RC (READ-COMMITED) 表示读已提交 中

一个事务提交后,它做的变更才会被其他事务看到

事务A-begin 事务B-begin

select a=10 select a = 10

update a=10 - > 20 select a = 20

commit

级别三:RR (REPEATABLE-READ) 表示可重复读 高

一个事务执行过程中看到的数据,总是和跟这个事务在启动时看到的数据是一致的。

事务A-begin 事务B-begin

select a=10 select a = 10

update a=10 - > 20 select a = 10

commit commit

select a=20 select a=20

级别四:SR (SERIALIZABLE)可串行化 严格

多个并行事务分别执行

事务A-begin 事务B-begin

select a=10 select a = 10

update a=10 - > 20 L-行锁 update a=10 -> 30 禁止

表锁

commit

查看级别:
mysql> select @@transaction_isolation;
+-------------------------+
| @@transaction_isolation |
+-------------------------+
| REPEATABLE-READ         |
+-------------------------+
-- 默认级别