DDIA-事务

作者: 构建者 | 来源:发表于2020-12-03 21:05 被阅读0次

综述

事务,是一个数据库绕不开的话题。我本人对于事务的理解,也仅仅停留在表层,应用层面也只是使用下Spring的声明式事务,对于事务,总感觉如隔了一层纱,模糊不清。借此读书机会,深入理解下事务的因果,做到知其然知其所以然。以下是暂时的理解,后期持续更新,做到熟记概念,讲的通原理,能够正确运用。
事务是个抽象的概念,是数据库提供的一种安全保障,避免了应用程序为了保障数据完整性为引入过多的复杂设计。

ACID

  • 原子性(Atomicity)
    原子性的定义特征:能够在错误时中止事务,丢弃该事务进行的所有写入变更的能力。
    原子性描述的不是并发的问题,它描述的是一个事务所做的修改,要么一起完成后提交,要么失败后事务回滚,数据库会到事务开始前的状态。
  • 一致性(Consistency)
    一致性的定义特征:对数据的一组特定陈述必须始终成立。
    一致性是被书中说凑数的,实际需要应用程序来保障。举例:比如银行转账,A和B账号都为500元,则合计1000元。一致性就是要保障在转账前后,1000元总数不变,而这需要应用程序来保障。
  • 隔离性(Isolation)
    隔离性的定义特征:隔离性是描述的并发问题,当出现竞态条件是,数据库如何处理。不同的数据库提供了不同的隔离级别来保障事务。常见的是"Read Committed",即读已提交,MySQL是"Repeatable Read",即可重复读。事务的隔离级别是实现很有意思,也是一个值得深究的话题,比如MVCC等。留坑后补。
  • 持久性(Durability)
    持久性的定义特性:事务一旦提交,数据就永久保存不会丢失。书中讨论的磁盘损坏的话题,还讨论了数据备份问题。这里的永久保存就像可靠性保障,没有100%。

隔离级别

讨论隔离级别,就需要为什么要分为不同的隔离级别,以及不同隔离级别保证的什么功能。必须要理解脏读、脏写、更新丢失、不可重复读以及幻读的概念。留坑后补吧。

参考

原文
数据库村的旺财和小强
知乎

相关文章

  • DDIA-事务

    综述 事务,是一个数据库绕不开的话题。我本人对于事务的理解,也仅仅停留在表层,应用层面也只是使用下Spring的声...

  • DDIA-数据分区

    综述 本章主要介绍了切分大型数据集的若干方法,即如何分区;再讨论数据索引如何影响分区;接下来讨论了分区的再平衡,这...

  • DDIA-数据复制

    综述 首先介绍什么是复制,然后介绍了下主流的复制方式(主从),重点关注了主从复制的流程、技术实现及存在的问题。最后...

  • DDIA-数据存储与检索

    # 日志结构存储引擎 使用日志记录数据,仅支持追加形式的记录集合。 # 面向页的存储引擎 # 索引是基于原始数据派...

  • DDIA-分布式数据

  • DDIA-分布式数据系统

    占坑,后补。。。

  • DDIA-分布式系统的麻烦

    综述 本章讨论了分布式系统面临的麻烦事,网络问题(无法完全保障的网络)、时钟和时序问题(不可靠时钟),以及面对这些...

  • DDIA-数据密集型应用特性

    概念引入 当今应用都属于数据密集型应用,而不是计算密集型应用。对于这类应用,CPU处理往往不是第一限制因素,关键在...

  • java事务

    1、java事务介绍 2、JDBC事务 3、JTA事务 1、java事务介绍 java事务分类:JDBC事务、...

  • 事务、MySQL与Python交互、Python 中操作 MyS

    1、事务 事务操作分两种:自动事务(默认)、手动事务 手动事务的操作流程 开启事务:start transacti...

网友评论

    本文标题:DDIA-事务

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