美文网首页
20.事务简介(gold_axe)

20.事务简介(gold_axe)

作者: 胖达_4b7e | 来源:发表于2019-08-22 14:43 被阅读0次

概念

事务: 需要满足ACID是数据库操作

  • Atomictiy 原子性
  • Isolation 隔离性
    各状态的转换不能互相影响, 比如下图 是最低的隔离级别 READ UNCOMMITED 未提交读, 就会出错


  • Consistency 一致性
    就是数据库中的数据, 全部发河现实世界中的约束, 比如钱不能有负数, 各账号之间转账, 总钱数不变, 这些主要靠业务代码保证

原子性和隔离性没达到, 会导致一致性达不到
但是 原子性和隔离性 都达到了, 一致性也可能不满足 ,比如钱数为负数

  • Durability 持久性
    如前文所述, 修改了某UE只是写到buffer pool 缓存中, 要等某个时间点 后台线程把脏页刷到磁盘, 如果这段时间内系统崩溃了怎么办?
    持久性要求, 状态转换成功就是成功了, 不能成功后, 因为任何原因, 又把状态还原了

事务的状态

  • 部分提交: 内存中完成 , 还没刷到磁盘
  • 终止的: 回滚还原后

如图 只有 提交的中止的 是结束了

事务相关语法

BEGIN;
UPDATE account SET balance = balance - 10 WHERE id = 1; 
UPDATE account SET balance = balance + 10 WHERE id = 2;
COMMIT;

BEGIN;开始事务

可以换成 START TRANSACTION; 更加强大, 因为START TRANSACTION;可以带修饰符 只读/可读写/一致性读

默认每条sql是一个事务

自动提交 autocommit 默认是 ON, 可以关

COMMIT; 提交事务, 提交以后就是成了 , 要保证持久性

程序员主动回滚

没发错错误, 只是想手动回滚, 用ROLLBACK;

BEGIN;
UPDATE account SET balance = balance - 10 WHERE id = 1;
UPDATE account SET balance = balance + 1 WHERE id = 2;
ROLLBACK;

只主动回滚一部分 ROLLBACK TO s1 s1是之前设的保存点

BEGIN;
UPDATE account SET balance = balance - 10 WHERE id = 1;
SAVEPOINT s1;    # 一个保存点
SELECT * FROM account;
+----+--------+---------+
| id | name   | balance |
+----+--------+---------+
|  1 | 狗哥   |       1 |
|  2 | 猫爷   |       2 |
+----+--------+---------+
2 rows in set (0.00 sec)

UPDATE account SET balance = balance + 1 WHERE id = 2; # 更新错了
ROLLBACK TO s1;  #  回滚到保存点s1处
隐式提交

一些语句自带COMMIT;的效果
比如 再开始一个事务BEGIN;会自动把上一个提交
对表结构的修改, 会把没提交的事务提交
批量往数据库中导入数据时, 会把之前没提交的事务提交

相关文章

  • 20.事务简介(gold_axe)

    概念 事务: 需要满足ACID是数据库操作 Atomictiy 原子性 Isolation 隔离性各状态的转换不能...

  • 数据库事务简介(一)--- 所谓事务

    事务的概念 数据库事务简介(一)--- 所谓事务数据库事务简介(二)--- 故障恢复(未完成)数据库事务简介(三)...

  • MySQL数据库高级(七)——事务和锁

    MySQL数据库高级(七)——事务和锁 一、事务简介 1、事务简介 事务(Transaction) 是指作为单个逻...

  • 关于mysql数据库锁的完全解读

    一、事务简介 1、事务简介 事务(Transaction) 是指作为单个逻辑工作单元执行的一系列操作。 2、事务的...

  • Spring 事务简介

    本文介绍了Spring 事务的相关知识。内容仅供参考使用,有不足之处请及时指出,也欢迎大家交流探讨。 事务概述 事...

  • Spring事务简介

    事务的传播行为 Spring事务有7种传播行为: PROPAGATION_REQUIRED 支持当前事务,如果当前...

  • redis事务简介

    事务流程: 1、开始事务:MULTI 2、命令入队:要操作的命令,如:set name 'meter' 3、执行事...

  • Spring 事务简介

    事务 事务及数据库事务,是数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。 ACID特性 ...

  • [spring] 事务简介

    什么是事务 一个事务是有下列属性的一个工作单元: 原子性(ATOMICITY):一个事务要被完全的无二义性的做完或...

  • 事务

    简介 MULTI、EXEC、DISCARD、WATCH是redis事务的基础。事务特征如下: redis事务允许将...

网友评论

      本文标题:20.事务简介(gold_axe)

      本文链接:https://www.haomeiwen.com/subject/umsnsctx.html