事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功。

我们先举一个例子来描述一下事务:

假设要张三通过银行给李四进行转账1000元钱,张三原有余额10000元整,李四有人民币3000元整。

以下是操作流程:

时间 t1       检查张三余额是否够转账

时间 t2      从张三中扣除1000元

时间t3       在李四的账户中添加1000元

在上述的步骤的操作必须打包在一个事务-转账,我们可把它描述为这个事务程序:

t0    开始事务

t1    SELECT balance FROM account_tab WHERE account_name='张三'' ;

t2    UPDATE account_tab SET balance=balance-1000 WHERE  account_name='张三'' ;

t3   UPDATE account_tab SET balance=balance+1000 WHERE  account_name='李四'' ;

t4  COMMIT;

我们假设在t3李四的账户中添加1000元发生失败,则这次转账业务失败,我们需要数据回滚到最初始状态。

将扣除的1000元钱回滚给张三的账户,否则后果不堪设想。

要满足事务开发中的准确性,那么在数据库事务程序不可不理解事务的四大特性【ACID】

    

  • 原子性(atomicity)

一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对一个事务来说,不可能

只执行其中的一部分操作,这是事务的原子性。

  • 一致性(consistency)

数据库总数从一个一致性的状态转换到另外一个一致性状态。以转账为例,如果在t3出现错误,事务没有提交,所欲事务做的修改就不会保存到数据库。确保了数据的一致性。

  • 隔离性(isolation)

通常说,一个事务所做的修改在最终提交前,对其它事务不可见的。它由一些隔离机制来控制。

  • 持久性(durability)

一旦事务提交,则其所做的修改就会永久保存到数据库中。此时即使系统奔溃,修改的数据也不会丢失。

在四大特性中影响我们开发的主要以隔离性为主,接下来我们看看数据库的隔离性:

脏读(读取未提交数据)READ UNCOMMITED

          在事务的修改即使没有提交也是对其它事务可见的。事务可以读取未提交的数据。这个级别的事务隔离会导致很多问题。

         B事务读取A事务尚未提交的数据,此时如果A事务发生错误并执行回滚操作,那么A事务读取到的数据就是脏数据。举例如下

       不可重复读

        两次读取的内容不一致

      幻读

        当某个事务在读取某个范围内的记录时另外一个事务对该范围内插入了新的记录。

“不可重复读“和“幻读”的区别

  • 不可重复读是读取了其他事务更改的数据
  • 幻读是读取了其他事务新增的数据

数据库零基础之---了解数据库的事务[ACID]的更多相关文章

  1. 数据库开发基础 SQL Server 数据库的备份、还原与分离、附加

    认识数据库备份和事务日志备份 数据库备份与日志备份是数据库维护的日常工作,备份的目的是 一.在于当数据库出现故障或者遭到破坏时可以根据备份的数据库及事务日志文件还原到最近的时间点将损失降到最低点 二. ...

  2. MySQL(一) -- MySQL学习路线、数据库的基础、关系型数据库、关键字说明、SQL、MySQL数据库、MySQL服务器对象、SQL的基本操作、库操作、表操作、数据操作、中文数据问题、 校对集问题、web乱码问题

    1 MySQL学习路线 基础阶段:MySQL数据库的基本操作(增删改查),以及一些高级操作(视图.触发器.函数.存储过程等). 优化阶段:如何提高数据库的效率,如索引,分表等. 部署阶段:如何搭建真实 ...

  3. 2020年数据库概念与MySQL的安装与配置-从零基础入门MySQL-mysql8版本

    作者 | Jeskson 来源 | 达达前端小酒馆 从零基础入门MySQL数据库基础课 数据的概念,简介,安装与配置,Windows平台下MySQL的安装与配置. 数据库的概念:数据库是一个用来存放数 ...

  4. Java应用程序连接数据库--JDBC基础

    Java应用程序连接数据库--JDBC基础   Java应用程序连接数据库–JDBC基础 <!-- MySQL驱动,连接数据库用,由数据库厂商提供 --> <dependency&g ...

  5. ylb: 数据库操作方法基础

    ylbtech-SQL Server:SQL Server-数据库操作方法基础 数据库操作方法基础. ylb: 数据库操作方法基础 返回顶部 ----------试图操作(view)--------- ...

  6. Sql基础(零基础学数据库_SqlServer版)

    刚开始学C#时候的笔记,只是些基础的语句如有错误请批评指正,谢谢,(使用SqlServer2012以上) 一.  数据库概述 SQI全称 structrued Query Language 1.数据: ...

  7. 数据库MySQL(带你零基础入门MySQL)

    (一)认识数据库 redis默认端口:6379 mysql默认端口:3306 什么是数据库? 数据库的英文单词:data base,简称DB. 数据库实际上就是一个文件集合,是一个存储数据的仓库,本质 ...

  8. 🚴‍♂️全套MySQL数据库教程_Mysql基础入门教程,零基础小白自学MySQL数据库必备教程☔ #002 # 第二单元 MySQL数据类型、操作表#

    二.本单元知识点概述 (Ⅰ)知识点概述 二.本单元教学目标 (Ⅰ)重点知识目标 1.Mysql的数据类型2.如何选择数据类型3.创建表4.修改表5.删除表 (Ⅱ)能力目标 1.熟练创建数据库及删除数据 ...

  9. 零基础学Python--------第11章 使用Python操作数据库

    第11章 使用Python操作数据库 11.1 数据库编程接口 在项目开发中,数据库应用必不可少.虽然数据库的种类有很多,如SQLite.MySQL.Oracle等,但是它们的功能基本都是一样的,为了 ...

随机推荐

  1. JZOJ【NOIP2012模拟8.9】2020.10.5 T1

    逐个击破 题目 Description 三大战役的平津战场上,傅作义集团在以北平.天津为中心,东起唐山西至张家口的铁路线上摆起子一字长蛇阵,并企图在溃败时从海上南逃或向西逃窜.为了就地歼敌不让其逃走, ...

  2. 老猿学5G扫盲贴:3GPP中的5G计费架构

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 老猿学5G博文目录 一.计费逻辑架构和信息流 在32240子系列文档内 ...

  3. Xpath基础学习

    方法 获取文本 a/text() 获取a标签下的文本 a//text() 获取a标签下所有标签的文本 a[text()='xxx']获取文本为xxx的a标签 @符号 a/@href 获取a标签的hre ...

  4. PostMan设置环境变量&全局变量

    一.设置环境变量 1.点击右上角Manage Environment,进入环境变量设置界面 2.定义环境名称,参数名及参数值 3.将接口地址中服务器地址进行参数化,并选择对应的环境执行 二.设置全局变 ...

  5. 如何实现 token 加密(来自github每日一题)

    需要一个secret(随机数) 后端利用secret和加密算法(如:HMAC-SHA256)对payload(如账号密码)生成一个字符串(token),返回前端 前端每次request在header中 ...

  6. jquery 执行a 标签 点击事件 跳转href 路径

    <a href="./export.pdf" id="pdfdown" download="文件名.pdf">下载</a& ...

  7. 题解-CF708D Incorrect Flow

    题面 CF708D Incorrect Flow 给一张网络流图,可能有流量不守恒或者流量超过容量的情况,求最少的将某条边流量或容量 \(\pm 1\) 的操作次数使得网络流图正确. 数据范围:\(1 ...

  8. 【题解】「SP867」 CUBES - Perfect Cubes

    这道题明显是一道暴力. 暴力枚举每一个 \(a, b, c, d\) 所以我就写了一个暴力.每个 \(a, b, c, d\) 都从 \(1\) 枚举到 \(100\) #include<ios ...

  9. 三、Zookeeper简介

    一.简介 zookeeper 主要使用场景:分布式系统的分布式协同服务.协同工作就是通过某种方式,让着节点的信息能够同步和共享,依赖于进程间的通信.通信方式有俩种. 通过网络进行信息共享 现实工作中, ...

  10. redis学习之——redis.conf配置(基本)文件学习

    # Redis configuration file example # Note on units: when memory size is needed, it is possible to sp ...