mysql学习总结-事务(transaction)

在mysql数据库中制作千万级测试表 前言: 最近准备深入的学一下mysql,包括各种引擎的特性、性能优化、分表分库等。为了方便测试性能、分表等工作,就需要先建立一张比较大的数据表。我这里准备先建一张千万记录用户表。 步骤: 1 创建数据表(MYISAM方式存储插入速度比innodb方式快很多) 数据表描述 数据量:1千万 字段类型:   id :编号 阅读详情

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

  • 支持连续SQL的集体成功或集体撤销。
  • 事务是数据库在数据晚自习方面的一个功能。
  • 需要利用 InnoDB 或 BDB 存储引擎,对自动提交的特性支持完成。
  • InnoDB被称为事务安全型引擎。

事务开启

START TRANSACTION; 或者 BEGIN;
开启事务后,所有被执行的SQL语句均被认作当前事务内的SQL语句。

事务提交

COMMIT;

事务回滚

ROLLBACK;

如果部分操作发生问题,映射到事务开启前。

事务的特性

  • 原子性(Atomicity)
    事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
  • 一致性(Consistency)
    事务前后数据的完整性必须保持一致。
    - 事务开始和结束时,外部数据一致
    - 在整个事务过程中,操作是连续的
  • 隔离性(Isolation)
    多个用户并发访问数据库时,一个用户的事务不能被其它用户的事物所干扰,多个并发事务之间的数据要相互隔离。
  • 持久性(Durability)
    一个事务一旦被提交,它对数据库中的数据改变就是永久性的。

关于事务之间的隔离性

事务隔离性存在隔离级别,理论上隔离级别包括4个:

  • 第一级别: 读未提交(read uncommitted)
    对方事务还没有提交,我们当前事务可以读取到对方未提交的数据。
    读未提交存在脏读(Dirty Read)现象:表示读到了脏的数据。
  • 第二级别:读已提交(read committed)
    对方事务提交之后的数据我方可以读取到。
    这种隔离级别解决了:脏读现象没有了。
  • 第三级别:可重复读(repeatable read)
    这种隔离级别解决了:不可重复读问题。
    这种隔离级别存在的问题是:读取到的数据是幻象。
  • 第四级别:序列化/串行化读
    解决了所有问题。但存在效率低。事务需要排队。

注意
oracle 数据库默认的隔离级别是:读可提交。(第二级别)
mysql 数据库默认的隔离级别是:可重复读。(第三级别)

事务的实现

  1. 要求是事务支持的表类型
  2. 执行一组相关的操作前开启事务
  3. 整组操作完成后,都成功,则提交;如果存在失败,选择回滚,则会回到事务开始的备份点。

事务的原理

利用InnoDB的自动提交(autocommit)特性完成。
普通的MySQL执行语句后,当前的数据提交操作均可被其他客户端可见。
而事务是暂时关闭“自动提交”机制,需要commit提交持久化数据操作。

注意

  1. 数据定义语言(DDL)语句不能被回滚,比如创建或取消数据库的语句,和创建、取消或更改表或存储的子程序的语句。
  2. 事务不能被嵌套

保存点

SAVEPOINT 保存点名称 – 设置一个事务保存点
ROLLBACK TO SAVEPOINT 保存点名称 – 回滚到保存点
RELEASE SAVEPOINT 保存点名称 – 删除保存点

InnoDB自动提交特性设置

SET autocommit = 0|1; 0表示关闭自动提交,1表示开启自动提交。

  • 如果关闭了,那普通操作的结果对其他客户端也不可见,需要commit提交后才能持久化数据操作。
  • 也可以关闭自动提交来开启事务。但与START TRANSACTION不同的是,
    SET autocommit是永久改变服务器的设置,直到下次再次修改该设置。(针对当前连接)
    而START TRANSACTION记录开启前的状态,而一旦事务提交或回滚后就需要再次开启事务。(针对当前事务)
Ubuntu22.04下RTX2080显卡驱动、CUDA、cuDNN保姆级避坑安装指南(实测有效) 本文提供Ubuntu22.04下RTX2080显卡驱动、CUDA和cuDNN的详细安装指南,涵盖前期准备、驱动安装、CUDA版本选择、cuDNN配置及常见问题解决。通过实测有效的步骤和优化建议,帮助用户快速搭建稳定的深度学习环境,避免常见陷阱。 阅读详情

相关推荐

80MHz~100MHz频谱分析仪设计

由理论分析可知,经过乘法器后输出的信号为频率为w1+w2的高频信号和w1-w2的低频信号,除了想要采样的直流信号外,最小的信号频率为100kHz。因此,经过一系列推导可以得到该滤波器的元件C1,C2,C3,R1,R2的近似值分别为:C1=2.36nF,C2=32.1nF,C3=1.07nF,R1=1.39k,R2=2.84k。AK,此时的频率w2即为被测信号的频率,待测信号源电压幅度为,因此为了能达到直流采样的设计,我们将本振源的频率输出范围做成80~110 MHz,提高了题目的频率要求。

qq_48771816的博客 5242

mysql学习总结十:事务

一、什么是事务? 事务(Transaction)是将⼀组操作封装成⼀个执⾏单元(封装到⼀起),这⼀个执⾏单元要么⼀起执⾏成功,要么⼀起失败,不会出现执⾏“⼀半”的情况。 注意:数据库引擎InnoDB才支持事务,MyISAM不支持事务。 二、为什么要使用事务? 以银⾏转账为例,张三给 李四 转账,那么它的执⾏流程是这样的: 1、张三账户 -500 update account set money=money-500 where name = ‘张三’; 2、B李四账户 +500 update ac

weixin_45795182的博客 1827

【OpenCV】背景替换(opencv、python),照片、证件照的背景替换(抠图)

目录步骤:导入库1、读入将要抠图的图片2、create一个带颜色域的mask3、通过mask使得原图只显示汽车,即抠出所需要的部分4、将要替换掉的图像resize或裁剪到和上述图片一样的大小5、将该图片预留出将要重叠上的部分,即将mask部分改为(0,0,0)6、通过和运算使得两部分图片mask部分替换7、最后保存图片 步骤: 导入库 import matplotlib.pyplot as plt import matplotlib.image as mpimg import numpy as np imp

weixin_41729258的博客 4362

MySQL 事务总结

事务(Transaction)是由一系列对系统中数据进⾏访问与更新的操作所组成的⼀个程序执行逻辑单元。 (1) 事务的 语法 (2) 事务的特性 (3) 事务并发问题 (4) 事务隔离级别 (5) 不同隔离级别的锁的情况(了解) (6) 隐式提交(了解) 事务的语法 start transaction; begin; commit; 使得当前的修改确认 rollback; 使得当前的修改被放弃 事务的ACID特性 原⼦性(Atomicity) 事务的原⼦性是指事务必须是⼀个原子的操作序列单元。事务中

w1511269434的博客 216

告别以太网瓶颈:手把手教你为AI训练集群搭建InfiniBand网络(以NVIDIA DGX A100/H100为例)

本文详细指导如何为AI训练集群搭建InfiniBand网络,解决以太网瓶颈问题,特别针对NVIDIA DGX A100/H100系统。通过硬件选型、网络架构设计和性能调优,显著提升多机多卡训练效率,适用于大规模模型训练场景。

weixin_30336061的博客 311

从仿真到实践:两级直接耦合放大电路的静态工作点协同调试指南

本文详细解析了两级直接耦合放大电路的静态工作点协同调试方法,从仿真到实践提供系统指南。重点介绍了Rc2电阻调整技巧、集电极电位测量方法及常见问题排查,帮助工程师解决各级静态工作点相互影响的难题,提升模拟电路设计效率。

weixin_29189373的博客 124

MySQL事务的总结

事物有四个属性(ACID) **原子性(Atomicity):**原子性是指在一个事务中,对数据库有多次修改,在事务提交的时候,它们就都执行,在事务回滚的时候,他们就都不执行。 **一致性(Consistency):**数据库在任何时候都保持着一致性状态,包括提交、回滚后,以及在开启事务之后也保持着一致性。一致性看的是修改前的数据和修改后的数据总和不变。举个例子:小明和小红两人各有1000元,小明给小红转账500元,转帐前小明和小红总共有2000元,转账小明500元加上小红的1500元还是2000元。因为有

paraquelavida的博客 249

【图像超分】论文精读:Residual Dense Network for Image Super-Resolution(RDN)

一个非常深的卷积神经网络 (CNN) 最近在图像分类 (SR) 方面取得了巨大成功,并提供了分层特征。然而,大多数基于深度 CNN 的 SR 模型没有充分利用原始低分辨率 (LR) 图像中的层次特征,从而实现相对较低的性能。在本文中,我们提出了一种新的残差密集网络(RDN)来解决图像SR中的这个问题。我们充分利用所有卷积层的分层特征。具体来说,我们提出了残差密集块(RDB)通过密集连接的卷积层提取丰富的局部特征。RDB 进一步允许将前一个 RDB 的状态与当前 RDB 的所有层直接连接,从而产生连续的内存

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 7258

MySQL事务总结

什么是事务? 一个事务其实就是一个完整的业务逻辑。 是一个最小的工作单元。不可再分。 什么是一个完整的业务逻辑? 假设转账,从A账户向B账户中转账10000. 将A账户的钱减去10000(update语句) 将B账户的钱加上10000(update语句) 这就是一个完整的业务逻辑。 只有DML语句才会有事务这一说,其它语句和事务无关!!! 以InnoDB存储引擎为例,它提供一组用来记录事务性活动的日志文件 在事务的执行过程中,每一条DML的操作都会记录到“事务性活动的日志

qq_52215821的博客 187

基于STM32、HAL库的MCP4651-503E/ST数字电位器驱动程序设计

@param channel: 通道 (0: A通道, 1: B通道)* @param channel: 通道 (0: A通道, 1: B通道)// SPI1 SCK/MISO/MOSI引脚配置。* @param hmcp: MCP4651句柄。* @param hmcp: MCP4651句柄。* @param hmcp: MCP4651句柄。* @param hmcp: MCP4651句柄。* @param hmcp: MCP4651句柄。* @param hspi: SPI句柄。

corlin6688的博客 137

EtherCAT主站SOEM -- 0 -- 该EtherCAT主站SOEM专栏后续安排

SOEM(Simple Open EtherCAT Master)是一个开源的EtherCAT主站库,允许开发者构建自定义的EtherCAT主站应用程序。EtherCAT是一种实时以太网通信协议,广泛应用于工业自动化和机器控制领域。开源性质:SOEM是一个开源项目,这意味着开发者可以自由地查看、修改和分发代码。这使其成为工业自动化领域的一个强大工具,可以根据具体需求进行定制。EtherCAT主站实现:SOEM库提供了一个完整的EtherCAT主站实现,允许主站与多个EtherCAT从站设备进行通信。

常驻客栈的博客--嵌入式EtherCAT 6666

MySQL Transaction(事务)学习笔记

一、资源入口 这次很快就找到了入口 在MySQL官方文档界面查找(MySQL Server—>MySQL Reference Manual—>选定自己的版本,当然也可以下载的 ) 不过说真的还是下载下来HTML比较方便点,打开Index.html就是目录了,我在其中搜索字段‘transaction’然后可以快速定位自己关心的内容。 我已经得到的信息glossary.html 词汇表 二、词汇表中关

我的学生时代 1万+

乐鑫科技 EchoEar 喵伴修改自定义唤醒词的方法 EchoEar喵伴、唤醒词修改、ESP32、AI萌宠、智能音箱、开发者指南

标签:乐鑫科技、EchoEar喵伴、唤醒词修改、ESP32、AI萌宠、智能音箱、开发者指南大家好,我是一名前端开发工程师,最近在玩乐鑫科技推出的时,发现它不仅萌趣十足,还能进行全双工语音交互、多模态识别,甚至能识别你的情绪和与你互动。EchoEar 喵伴是由乐鑫科技和火山引擎扣子大模型团队合作开发的,它使用乐鑫的芯片方案(ESP32 系列)+ 火山引擎扣子大模型,支持 WiFi 连接和本地处理,长记忆能力可以让它记住用户的偏好与习惯。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1888

MySQL的事务(Transaction)【学习笔记】

MySQL的事务(Transaction)【学习笔记】

sjhhshsh的博客 1160

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

mysql数据库学习总结——事务Transaction详解

数据库学得一知半解,,在这里进行一些拓展和自学,用好了MySQL,用oracle和其他的一些数据库的时候,也比较熟悉。 下面对几个问题进行讨论: 1.MySQL嵌套事务 MySQL——事务(Transaction)详解 环境:存储引擎是InnoDB **事务:**一个最小的不可再分的工作单元;通常一个事务对应一个完整的业务(例如银行账户转账业务,该业务就是一个最小的工作单元) 一个完整的业务需要批...

清凌的博客 1086

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

mysql transaction 事务 概念和用法学习

MySQL 数据处理方法:BEGIN 开始一个事务SAVEPOINT P1 建立保存点ROLLBACK 事务回滚COMMIT 事务确认#一个简单事务 start transaction; insert into SC values ("9611101","D01",60); insert into SC values ("9612102","D04",89); commit ;#一个回滚事务(等于...

三生锁链 957

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Mysql学习之事务(Transaction)

目录 描述 事务要求的特性(ACID) 事务隔离性的级别 大事务优化 描述 事务是多个具有原子性的Sql语句组成的独立工作单元,是数据库系统区别于文件系统的重要特性之一; 在Mysql存储引擎中,Innodb支持事务,Innodb事务的隔离级别默认是可重复读; 事务要求的特性(ACID) 原子性(A):事务是独立且不可分割的工作单元,事务的操作要么全部成功,要么全部失败; ...

Flyz_boy_hss的博客 309

mysql transaction用法_mysql transaction 事务 概念和用法学习

MySQL 数据处理方法:BEGIN开始一个事务SAVEPOINT P1 建立保存点ROLLBACK事务回滚COMMIT事务确认#一个简单事务start transaction;insert into SC values ("9611101","D01",60);insert into SC values ("9612102","D04",89);commit ;#一个回滚事务(等于没做)star...

weixin_26985923的博客 179

mysql深入学习之事务transaction相关操作

事务transaction 查询当前事务隔离级别 -- 查询 select @@ tx_isolation; show variables like '%isolation%'; -- 以下是设置 (session 代表会话级别的设置,可以替换成global 全局) set session transaction isolation level read uncommitted; set session transaction isolation level read committed; set s

架构路上的博客 360

MySQL 学习笔记——事务(Transaction)

介绍事务基本操作、四大特性、常见并发问题和隔离级别

猫头夜鹰的小屋 715

学习Mysql:事务(Transaction)

什么是事务?(Transaction) 一个事务就是一个完成的逻辑单元,不可再分。 例如:银行账户转账:张三在银行从A账户给B账户转10000块钱,需要执行两条update语句。 update t_act set balance=balance-10000 where actno=”actno_A“; update t_act set balance=balance-10000 where actno ="actno_B"; 以上的两条update语句必须同时成功,或者同时失败,不需要出现一条成功一条失

qq_45979629的博客 185

Mysql学习笔记:事务(Transaction)总结

定义 一个事务是个完整的业务逻辑单元,不可再分。 事务的四大特性(ACID) 原子性(Atomicity) 事务的操作是不可再分的。要么所有操作全部成功执行,要么全部失败。 一致性(Consistency) 在网上并没有找到非常能令人信服的定义: 保证事务只能把数据库从一个有效(正确)的状态“转移”到另一个有效(正确)的状态。 https://www.zhihu.com/question/31346392 隔离性(Isolation) 多个事务的执行不会互相影响。 持久性(Durability) 持久性是指

ITxiaofeixiang的博客 251

mysql学习笔记之Transaction Control Language 事务控制语言

#TCL /* Transaction Control Language 事务控制语言 事务: 一个或一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行。 案例:转账 张三丰 1000 郭襄 1000 update 表 set 张三丰的余额=500 where name=‘张三丰’ 意外 update 表 set 郭襄的余额=1500 where name=‘郭襄’ 事务的特性: ACID 原子性:一个事务不可再分割,要么都执行要么都不执行 一致性:一个事务执行会使数据从一个一致状态

i_believe_you的博客 434

MySQL学习笔记7||事务transaction和视图view

备注:该博客内容根据技术教学视频整理与总结而成,原视频来自于尚硅谷MySQL教程。 一、事务 1、含义:通过一组逻辑操作单元(一组SQL语句),将数据从一种状态切换到另外一种状态2、特点(ACID)【★】: 原子性(Atomicity):一个事务不可再分割,要么都执行要么都不执行 一致性(Consistency):一个事务执行会使数据从一个一致状态切换到另外一个一致状态 隔离性(Isolation):一个事务的执行不受其他事务的干扰 持久性(Durability):一个事务一旦提交,则会永久的改

Inochigohan的博客 276

一天学会MySQL数据库(13):手动开启事务BEGIN / START TRANSACTION

最近在学习数据库,寻找教程中,苦于视频长度几十个小时,没有沉下心去看,发现一个六小时长度的mysql教程,发现还不错,学习并记录学习笔记。 资源地址在最下方。 本篇文章,作为学习笔记可配套学习! 如何手动开启事务 事务的默认提交被开启 ( @@AUTOCOMMIT = 1 ) 后,此时就不能使用事务回滚了。但是我们还可以手动开启一个事务处理事件,使其可以发生回滚: -- 使用 BEGIN 或者 START TRANSACTION 手动开启一个事务 -- START TRANSACTION; BEGIN; U

weixin_43742894的博客 5014

mybatis mysql 事务处理_Spring Transaction + MyBatis SqlSession事务管理机制研究学习

线上的系统中,使用的是Spring+Mybatis+Mysql搭建的框架,由于客户需要,最近一直在对性能提升部分进行考虑,主要是涉及Mysql的一些重要参数的配置学习,以及Spring事务管理机制的学习,因为通过观察服务器日志,发现在这两部分的时候耗时比较严重,特别是进行mysql事务提交的时候,项目源码中使用了Spring的声明式事务,即通过@Transactional注解来控制事务的开启与提交...

weixin_33358246的博客 1615
上一篇: mysql学习总结-视图
下一篇: 剑指Offer(二):替换空格
piepis
博客等级 码龄10年 104粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

piepis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值