第 18 章 从猫爷借钱说起——事务简介

news2024/11/18 14:44:01

18.1 事务的起源

CREATE TABLE account (
id INT NOT NULL AUTO_INCREMENT COMMENT '自增id',
name VARCHAR(100) COMMENT '客户名称',
balance INT COMMENT '余额',
PRIMARY KEY (id)
) Engine=InnoDB CHARSET=utf8;
insert into account (name, balance) values ('狗哥', 11), ('猫爷', 2);
18.1.1 原子性(Atomicity)

不可分割,要么全做,要么全不做。

18.1.2 隔离性(Isolation)

访问相同数据的不同操作之前互相隔离,互不影响——线程安全

18.1.3 一致性(Consistency)

数据库世界是现实世界的一个映射,现实世界中存在的约束也要在数据库世界中体现。如果数据库中的数据全部符合现实世界中的约束,我们说这些数据就是一致的,或者说符合一致性的。

18.1.4 持久性(Durability)

当一个状态转换完成后,这个转换结果将永久保留。

18.2 事务的概念

保证原子性、隔离性、一致性和持久性的一个或多个数据库操作称为一个事务(transaction)。

事务状态描述
活动的(active)事务应对的数据库操作正在执行过程中
部分提交的(partially committed)事务中的最后一个操作执行完成,但由于操作都在内存中执行,所造成的影响并没有刷新到磁盘时
失败的(failed)事务处在活动的或部分提交的状态时,遇到了某些错误而无法继续执行,或人为停止当前事务的执行
中止的(abort)失败后回滚完成
提交的(committed)处在部分提交的状态的事务同步到磁盘上后

在这里插入图片描述

18.3 MySQL中事务的语法

18.3.1 开启事务
BEGIN;
START TRANSACTION [option];
  1. READ WRITE:读写事务
  2. WITH CONSISTENT SNAPSHOT:一致性读
18.3.2 提交事务
COMMIT;
18.3.3 手动中止事务
ROLLBACK;
18.3.4 支持事务的存储引擎

目前只有 InnoDB 和 NDB 。

18.3.5 自动提交
SHOW VARIABLES LIKE 'autocommit';

在这里插入图片描述

默认情况下,如果不显式开启事务,那么每一条语句都算是一个独立的事务。这种特性称为自动提交

18.3.6 隐式提交

开启事务后,虽然没有手动提交,但因为输入了某些语句导致事务被偷偷提交。

  1. 定义或修改数据库对象的DDL
  2. 隐式使用或修改 mysql 库中的表
  3. 事务控制或关于锁定的语句
  4. 加载数据的语句
  5. 关于 MySQL 复制的一些语句
  6. 其他一些语句
18.3.7 保存点

savepoint,在事务对应的数据库语句中打几个点,回滚时可以指定回滚到某个点。

18.4 总结

  1. 事务指需要保证原子性、隔离性、一致性和持久性的一个或多个数据库操作
  2. 事务的执行状态包括活动的、部分提交的、提交的、失败的、中止的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2173849.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VS开发C++项目常用基础属性配置

这篇文件简单讨论一下visual studio中项目属性的常用基础配置。 1.输出目录:项目目标文件生成位置。 2.中间目录:项目生成的中间文件所在的位置。 3.目标文件名:项目生成目标文件名称。 4.附加包含目录:三方库等头文件所在的位…

图新说 注册机使用 功能介绍

图新说简介 1. 什么是图新说? 图新说是一款技术自主可控的国产三维BIMGIS数字化方案汇报、成果交付平台。主要解决汇报方案的精准还原、方案展示、方案汇报及成果交付问题。 将影像、实景三维等周边现状数据与设计成果完美融合将设计方案二三维一体化表达流畅讲解设…

用Promise实现前端并发请求

/** * 构造假请求 */ async function request(url) {return new Promise((resolve) > {setTimeout(() > {resolve(url);},// Math.random() * 500 800,1000,);}); }请求一次,查看耗时,预计应该是1s: async function requestOnce() {c…

vue 项目打包更新后,界面未刷新时js与css资源加载404,监听资源文件404后自动重新加载页面。

问题 vue 项目打包更新(生成环境)后,界面未刷新时js与css资源加载404,如图: 期望 希望可以监听到资源文件加载404时,刷新界面,解决打包后由于文件名的变化导致点击旧页面时 JS 和 CSS 文件出…

Spring MVC常用注解(绝对经典)

文章目录 一、元注解1.1 Target:1.2 Retention: 二、常见注解2.1 Controller:2.2 SpringBootApplication:2.3 RequestMapping:2.4 RequestParam:2.5 PathVariable:2.6 RequestPart:2…

OpenCV 形态学相关函数详解及用法示例

OpenCV形态学相关的运算包含腐蚀(MORPH_ERODE),膨胀(MORPH_DILATE),开运算(MORPH_OPEN),闭运算(MORPH_CLOSE),梯度运算(MORPH_GRADIENT),顶帽运算(MORPH_TOPHAT),黑帽运算(MORPH_BLACKHAT),击中…

『网络游戏』GoLand服务器框架【01】

打开GoLand创建项目 编写Go程序:main.go package mainimport ("fmt""newgame/game/gate""os""os/signal""syscall""time" )var (SinChan make(chan os.Signal, 1)closeChan chan struct{} )func ma…

【JavaEE】——线程池大总结

阿华代码,不是逆风,就是我疯, 你们的点赞收藏是我前进最大的动力!!希望本文内容能够帮助到你! 目录 引入:问题引入 一:解决方案 1:方案一——协程/纤程 (1…

SwiftUI简明概念(3):Path.addArc的clockwise方向问题

一、画个下半圆 SwiftUI中绘制下半圆的一个方法是使用Path.addArc,示例代码如下: var body: some View {Path { path inpath.addArc(center: CGPoint(x: 200, y: 370), radius: 50, startAngle: Angle(degrees: 0), endAngle: Angle(degrees: 180.0), …

谷歌发布Imagen 3,超过SD3、DALL・E-3,谷歌发布新RL方法,性能提升巨大,o1模型已证明

谷歌发布Imagen 3,超过SD3、DALL・E-3,谷歌发布新RL方法,性能提升巨大,o1模型已证明。 谷歌DeepMind发布了全新文生图模型Imagen 3,在文本语义还原、色彩搭配、文本嵌入、图像细节、光影效果等方面相比第二代大幅度提升…

2024新版IDEA创建JSP项目

1. 创建项目 依次点击file->new->Project 配置如下信息并点击create创建项目 2. 配置Web项目 点击file->Project Structure 在点击Project Settings->Module右键右边模块名称->ADD->Web 点击Create Artifact 出现如下界面就表示配置完毕,…

3.整数二分

模板 package base;public class Bsearch {public int binary_search1(int l, int r){while (l<r){int mid (lr1)>>1;if(check(mid)) lmid;else r mid-1;}return l;}public int binary_search2(int l, int r){while (l<r){int mid (lr)>>1;if (check(mid…

Python酷库之旅-第三方库Pandas(129)

目录 一、用法精讲 576、pandas.DataFrame.merge方法 576-1、语法 576-2、参数 576-3、功能 576-4、返回值 576-5、说明 576-6、用法 576-6-1、数据准备 576-6-2、代码示例 576-6-3、结果输出 577、pandas.DataFrame.update方法 577-1、语法 577-2、参数 577-3、…

实操了 AI 大模型项目落地, 程序员成功转变为 AI 大模型工程师

根据《2024 年全球人工智能行业报告》最新的数据显示&#xff0c;全球 AI 市场预计将以每年超过 40% 的速度增长&#xff0c;到 2030 年市值将达到数万亿美元&#xff0c;这也是预示着在接下来的十年到十五年里&#xff0c;人工智能将获得巨大的发展红利。 在过去的一年多时间…

如何配置flutter(超详细的哦)

目录 首先先去官网下载zip包 下载下来之后就是解压 配置环境变量 winr查看是否配置成功 解决报错 [!] Android toolchain - develop for Android devices (Android SDK version 35.0.0)X cmdline-tools component is missing Android license status unknown 首先先去官…

docker pull 超时的问题如何解决

docker不能使用&#xff0c;使用之前的阿里云镜像失败。。。 搜了各种解决方法&#xff0c;感谢B站UP主 <iframe src"//player.bilibili.com/player.html?isOutsidetrue&aid113173361331402&bvidBV1KstBeEEQR&cid25942297878&p1" scrolling"…

力扣 简单 111.二叉树的最小深度

文章目录 题目介绍题解 题目介绍 题解 最小深度&#xff1a;从根节点到最近叶子结点的最短路径上节点数量 class Solution {public int minDepth(TreeNode root) {if (root null) {return 0;}int left minDepth(root.left);int right minDepth(root.right);// 如果 node 没…

处理not in gzip format异常

1、为什么会触发这个异常&#xff1f; 当我们使用GZIPInputStream的read方法进行读取数据时&#xff0c;它会自动处理gzip格式的压缩数据&#xff0c;将它解析成原始的二进制数据。但是&#xff0c;如果你没有将原始数据进行gzip压缩后传入GZIPInputStream流&#xff0c;进行r…

JavaEE——多线程Thread 类及常见方法

目录 一、Thread(String name) 二、是否后台线程 isDeamon() 三、是否存活 isAlive() 四、run()方法和start()方法的区别 五、中断线程 法一&#xff1a; 法二&#xff1a; 六、线程等待join() 七、线程休眠sleep() 一、Thread(String name) 定义&#xff1a;这个东西…

免杀对抗—C++混淆算法shellcode上线回调编译执行

前言 上次讲了python混淆免杀&#xff0c;今天讲一下C混淆免杀。其实都大差不差的&#xff0c;也都是通过各种算法对shellcod进行混淆免杀&#xff0c;只不过是语言从python换成c了而已。 实验环境 测试环境依旧是360、火绒、WD还有VT。 shellcode上线 下面是最基本几个sh…