内容概述:
数据库事务机制概念
数据库事务机制的特性
数据库事务生命周期
数据库事务提交方式
数据库事务隔离级别
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 |
+-------------------------+
-- 默认级别
评论