Mysql_事务控制

基于PID算法的循迹小车 这一期为创客们带来基于PID算法的循迹小车制作 1.标准赛道示意图: (该赛道包含了:左直角、右直角、十字路口等路况) 2.灰度传感器安装示意图: (可根据实际情况调节各传感器之间的间距) 3.硬件原理图: 4.控制逻辑: 5.程序如下: #define leftA_PIN 7 #define leftB_PIN 6 #define left_Pwm_PIN 5 #define STBY... 阅读详情

#TCL 事务控制

 

    Transaction Control Language 事务控制语言

        事务有一个单独单元的一个或多个SQL语句组成,在这个单元中,每个MySQL语句时相互依赖的。

    并发事务

    1、事务的并发问题是如何发生的?

    多个事务 同时 操作 同一个数据库的相同数据时

    2、并发问题都那些?

    脏读:一个事务读取了其它事务还没有提交的数据,读到的是其它事务“更新”的数据

    不可重复读:一个事务多次读取,结果不一样

    幻读:一个事务读取了其它事务还没有提交的数据,只是读到的是 其它事务“插入”的数据

 

    

 

    事务:

        一个或一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行。

 

        案例:转账

        张三向李四进行转账500元

            张三   1000

            李四   1000

            涉及到两条SQL语句

        update 表 set 张三的账户=500 where name='张三';

        如果转账时出现意外 事务就会报异常 回到最初时 这两条语句是一个执行单元需要两条语句都执行完毕

        update 表 set 李四的账户=1500 where name='李四';

 

    事务的特性:

    ACID

        原子性:一个事务不可再分割,要么都执行要么都不执行

        一致性:一个事务执行会使数据从一个一致状态切换到另外一个一致的状态

        隔离型:一个事务的执行不受其它事务的干扰

        持久性:一个事务一旦提交,则会永久的改变数据库的数据

 

    事务的创建

        隐士事务:事务没有明显的开启和结束的标记

        比如insert、update、delete语句

        如:delete from 表 where id =1;比如执行一条删除语句 会自动提交事务 如果我想两条语句位一个单元就需要关闭自动提交事务

 

        显示事务:事务具有明显的开启和结束的标记

        前提:必须先设置自动提交功能位禁用状态

            set autocommit = 0;

            步骤1:开启事务

            set autocommit=0;

            statr transaction;可选的

            步骤2:编写事务的sql语句(select insert update delete)

            语句1;

            语句2;

            .... ....

            步骤3:结束事务

            commit;提交事务

            rollback;回滚事务

            savepoint 节点名;设置保存点

 

    事物的隔离级别:

            read uncommitted:出现脏读、幻读、不可重复读

            read committed:避免脏读,出现脏读和不可重读读

            repeatale read:避免脏读、不可重复读,出现幻读

            serializable:避免脏读、幻读、不可重复读,但效率底下

 

            mysql中默认 第三个隔离级别 repeatable read

            oracle中默认 第二个隔离级别 read committed

        查看隔离级别

            select @@tx_isolation;

        设置隔离级别

            set session(当前)|global(全局) transaction isolation level 隔离级别;

 

        开启事务的语句;

        update 表 set 张三的账户=500 where name='张三';

        update 表 set 李四的账户=1500 where name='李四';

        结束事务的语句;

 

自己理解事务 set autocommit=0;将自动提交事务关闭 如果不关闭自动提交事务 一条update执行完就自动提交事务

我需要两条甚至多条增删改查语句,就需要关闭自动提交事务。

就好比一个账户与另一个人转账:一条是减去账户的余额sql语句,对应一条时账户增余额语句,如果第一账户转出的语句执行完,出现意外,事务就直到作用,需要两条语句都执行才能完成。

所以事务是一个语句组执行单元

 

    #1.查看数据引擎 InnoDB支持事务

        SHOW ENGINES;

    #2.查看自动事务提交 autocommit

        SHOW VARIABLES LIKE 'autocommit';

         

 

    #3.关闭自动提交事务  只是在当前的回话中off了

        SET autocommit = 0;

        

 

演示事务案例

        DROP TABLE IF EXISTS account;

        CREATE TABLE IF NOT EXISTS account(

            id INT PRIMARY KEY AUTO_INCREMENT,

            username VARCHAR(20),

            balance DOUBLE

        );

        插入两个账户 余额分别为1000元

        INSERT INTO account(username,balance) VALUE('张无忌',1000),('赵敏',1000);

        

 

#演示事务的使用步骤

        #开启事务

            SET autocommit=0;

            START TRANSACTION;

        #编写一组事务语句

            UPDATE account SET balance=500 WHERE username='张无忌';

            UPDATE account SET balance=1500 WHERE username='赵敏';

        #结束事务 提交或回滚

            COMMIT;

    事务提交  再select * from account;显示的结果

        

 

        #开启事务

            SET autocommit=0;

            START TRANSACTION;

        #编写一组事务语句

            UPDATE account SET balance=1000 WHERE username='张无忌';

            UPDATE account SET balance=1000 WHERE username='赵敏';

        #结束事务 回滚事务

            ROLLBACK;

 

        进行事务回滚    两条sql语句将两个账户修改为1000元 将执行的事务回滚 原来的两个账户余额分别位500,1500 所以没有变化

        如果是回滚 插入语句时驻留在内存中 没有提交的磁盘当中

        

 

事务的隔离级别

        

        

 

    查看前数据库的隔离级别  默认的安全隔离

        select @@tx_isolation;

        

    set names gbk;设置字符集

第一个隔离级别 read uncommitted 读未提交的事务

    设置隔离级别为最低级别  set session transaction isolation level read uncommitted; 设置事务不受约束

      设置隔离级别为最低级别  才能看到脏读

    

 

    再进行隔离级别的查看 为read-uncommitted

    

 

    事务一. t1 开启事务同时更新一条语句  将张无忌改为了join 

    

 

此时没有没有提交事务 查询数据

    

 

此时打开第二个窗口 也要设置事务的隔离级别最低 read uncommitted

 

事务二。t2 开启事务

当事务一,提交执行 rollback回滚事务时 就会看到脏读和幻读

 

第二个隔离级别 read committed 可以避免脏读 但不可避免重复读

    事务一 t1 read committed 读已提交的事务 

    

事务开启 为数据更新将张无忌 改为join

 

 

事务二t2 也改为读已提交的事务

 

事务一t1 修改张无忌为john中 未提交事务 事务二t2中select查询的还是张无忌 所以避免了脏读 

但不避免了重复读 在多次查询中出现不一样 出现不可重复读 事务二t2未提交

 

第三个隔离事务级别 repeatale-read  能解决脏读 不可重复读 但不能解决 幻读

同时都设置为

事务一与事务二 开启事务

事务一t1  将john更改为tom 但事务没有提交 

事务二t2  执行第一次查询 为join 此时t1为未提交事务

事务一t1 提交事务commit  事务二再次进行查询未出现t1修改tom  两个事务进行隔离 互不干涉

事务二 t2提交事务 在隐式提交事务 select *from account;

 

隔离事务级别 repeatale-read 不能解决 幻读 如:

事务一 t1 查询有两行数据  update account set username='kkk'; 按说只有两条数据修改

 

事务二 t2 insert into account value(null,'俊杰',1000); 插入一条数据时 同时t2提交 表中就会出现三条数据 

事务一  再进行更新操作时 就会出现幻读的现象 因为t2插入数据以后提交事务 t1在进行更新就会出现操作了3条数据

 

隔离事务级别 最高级别 Serializable;  串行化性能 效率底下

事务一与事务二 设置为serializable 最高隔离级别

 

t1开启事务 执行操作 t2此时也开启事务 要进行插入操作时出现阻塞  说明t1开启事务t1持有锁 t2需要等待t1释放锁

 

#2.delete和truncate在事务使用时的区别

    #演示delete delete不支持回滚的

        SET autocommit=0;

        START TRANSACTION;

        DELETE FROM account;

        ROLLBACK;

    删除account表 rollback进行回滚

 

    #演示truncate truncate不支持回滚的

        #在回滚时truncate 磁盘提交文件 truncate不支持回滚的

        SET autocommit=0;

        START TRANSACTION;

        TRUNCATE TABLE account;

        ROLLBACK;

 

#3.演示savepoint的使用

    SET autocommit=0;

    START TRANSACTION;

    DELETE FROM account WHERE id=1;

    SAVEPOINT a;#设置保存点

    DELETE FROM account WHERE id=3;

    ROLLBACK TO a;#回滚到保存点

原来查询的  开启事务 执行两条删除语句 回滚到a节点  DELETE FROM account WHERE id=3;被回滚 id=1数据被删除 id=3没有删除

 

【ComfyUI】Flux + ControlNet 边缘搭配深度、瓷砖、姿态引导图生图 本文介绍了一个基于 Wan 2.1 的 ComfyUI 文生视频工作流,通过 UNet、CLIP 和 VAE 三个核心模型,将文本提示转化为动态视频。工作流包含模型加载、提示词解析、潜空间采样等7个环节,支持分辨率、帧数等参数设置,最终输出高质量视频文件。该方案适用于创意设计、教育培训和多媒体制作等场景,能快速生成符合语义的动态内容。文章还提供了相关开发资源和学习链接,适合AI视频生成领域的研究者和实践者参考。 阅读详情

相关推荐

【数据库】银行/信贷业务测试工作中涉及的数据库表格

银行/信贷业务测试工作中涉及的数据库表格,金融信贷测试人必看!

孤之鹜的博客 1173

MySQL 中的事务控制机制

MySQL 可以通过 set transaction_isolation 命令来调整隔离级别,新的隔离级别会在下一个事务开始时生效。对于 MyISAM 这种非事务型的表,修改 autocommit 不会有任何影响,因为非事务型的表,没有 commit或 rollback 的概念,它会一直处于 autocommit 启用的状态。在同一事务中,使用多种存储引擎是不可靠的,尤其在事务中混合使用了事务型和非事务型的表。MySQL 的服务层并不负责事务的处理,事务都是由存储引擎层实现。

2301_78008478的博客 612

2025趋势:经济学研究中AI多智能体系统的6大架构方向(AI应用架构师必藏)

多智能体系统(MAS)由多个相互作用的智能体组成,每个智能体具备自主决策能力、感知环境的能力和与其他智能体通信的能力。微观行为的精细化建模:智能体可被赋予异质的偏好函数、信息集和决策规则,模拟真实市场的多样性动态交互的涌现性分析:通过智能体间的局部互动(如交易、合作、竞争),观察宏观经济现象的涌现过程反事实政策实验:在虚拟环境中安全测试极端政策(如负利率、全民基本收入)的连锁反应实时自适应调整:智能体可通过机器学习持续优化策略,模拟经济系统的演化特性。

AI 领航者的博客 1425

MySQL事务管理

隔离级别越严格,安全性越高,但数据库的并发性能也就越低,在选择隔离级别时需在两者之间找一个平衡点表中只写出了各种隔离级别下进行读操作时是否需要加锁,因为无论哪种隔离级别,只要需进行写操作就一定要加锁。

GG_Bruse的博客 2788

切比雪夫(最小区域法)直线拟合算法

切比雪夫,最小区域法直线拟合

闪电彬彬的博客 3965

单细胞marker基因表达密度图-(还有一个包装函数)

我们借助Nebulosa,将上面的过程包装为一个函数,还是那句话,受累麻烦的事我们来解决,您轻松即可,先看看函数参数:需要注意的是,如果你只想框选某一类celltype,理想模式是这群celltype是单独聚类的,没有散落在其他类群,否则将会全部框选,效果不好,建议使用AI/PS添加。需要注意,这里我算是投机取巧了,用了一个和这个作图毫无关系的包ggnetwork,主要的目的是用他的theme_blank()主题,一次性将所有清空,当然也可以自己慢慢写,不过有现成的,为啥不用呢?这质感不就上去了嘛。

qq_42090739的博客 1372

mysql数据库之事务

原子性(Atomicity)一致性(Consistency )隔离性(Isolation)持久性(Durability)这是可靠数据库所应具备的几个特性。

cxin1225的博客 2986

别再手动写JSON了!用Node-RED OPC UA节点5分钟搞定楼宇温湿度数据采集

本文介绍了如何利用Node-RED和OPC UA节点快速实现楼宇温湿度数据的自动化采集与JSON格式转换。通过可视化工具Node-RED,开发者无需编写复杂代码,5分钟内即可完成从传感器到数据输出的全流程配置,大幅提升智慧楼宇和工业物联网项目的实施效率。

weixin_30368405的博客 433

【MySQL】事务管理

CURD不加控制,会有什么问题?这是一个经典的多线程并发导致数据不一致的问题,MySQL既然提供数据存储服务,那么它也要想办法解决上面的问题。那CURD满足什么属性,能解决上述问题?买票的过程得是原子的吧。(原子性)买票互相应该不能影响吧。(隔离性)买完票应该要永久有效吧。(持久性)买前和买后都要是确定的状态吧。(一致性)事务就是一组DML语句组成,这些语句在逻辑上存在相关性,这一组DML语句要么全部成功,要么全部失败,是一个整体。MySQL提供一种机制,保证我们达到这样的效果。

2301_80224556的博客 1709

YOLOv11改进策略【损失函数篇】| Slide Loss,解决简单样本和困难样本之间的不平衡问题

本文记录的是改进YOLOv11的损失函数,将其替换成Slide Loss,并详细说明了优化原因,注意事项等。Slide Loss函数可以有效地解决样本不平衡问题,为困难样本赋予更高的权重,使模型在训练过程中更加关注困难样本。若是在自己的数据集中发现容易样本的数量非常大,而困难样本相对稀疏,可尝试使用Slide Loss来提高模型在处理复杂样本时的性能。

Limiiiing的博客 4570

基于注意力机制的行人重识别(Reld)模型论文解读----Relation-Aware Global Attention for Person Re-identification

任务概述:在多摄像头的复杂场景中,快速定位查找指定目标的所有结果。

qq_52053775的博客 1895

MySQL事务控制语句

MySQL事务控制语句          在mysql命令行的默认下,事务都是自动提交的,sql语句提交后马上会执行commit操作。因此开启一个事务必须使用begin,start transaction,或者执行 set autocommit=0;  可以使用的事务控制语句 start transction | begin : 显示的开启一个事务  commit (commit work

xiaobudaics的专栏 1016

手把手教你学PCIE(2.1.23)--PCIe基本概念:链路速率协商

链路速率协商是一个多步骤的过程,确保发送端和接收端之间的链路速率设置一致。通过初始化链路速率寄存器、发送和接收 TS2 序列、检测链路对端的存在、交换链路速率信息、确定最大链路速率和配置链路速率,可以确保 PCIe 设备之间的数据传输速度最大化,从而提高数据传输效率。初始化链路速率寄存器:设置支持的最大链路速率。发送和接收 TS2 序列:检测链路对端的存在。交换链路速率信息:发送和支持的最大链路速率。确定最大链路速率:选择最小值作为最终链路速率。配置链路速率:更新链路速率寄存器。

MHD0815的博客 1817

php如何处理mysql事务控制

       博主最近在开发一个项目的时候,由于需要使用mysql事务进行控制,防止业务出错,所以就想到了用mysql事务控制来完成,因为是第一次使用原生的PHP处理mysql事务控制,自然也是百度了一番,最后还是自己总结出了方法,大家可以参考参考,代码如下: #链接数据库 $conSW = mysqli_connect("数据库地址", "账户", "密码", "数据库名称"); if (!...

HZX19941018的博客 1万+

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

mysql事务控制

mysql事务控制

KangJinXuan的博客 694

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

MySQL中事务控制语句_【MySQL技术内幕】50-事务控制语句

在 MySQL命令行的默认设置下,事务都是自动提交(auto commit)的,即执行SQL语句后就会马上执行 COMMIT操作。因此要显式地开启一个事务需使用命令BEGIN、 START TRANSACTION,或者执行命令 SET AUTOCOMMIT=0,禁用当前会话的自动提交。每个数据库厂商自动提交的设置都不相同,每个DBA或开发人员需要非常明白这一点,这对之后的SQL编程会有非凡的意义,...

weixin_42355256的博客 450

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

MySQL中的事务控制的介绍

1:事务控制 默认情况下,MySQL是自动提交(autocommit)的,什么意思?意思就是说你insert,或update某表之后,不需要commit,你的操作也会成功的改变表中的数据。2:为什么需要事务控制和锁 事务就是被绑定在一起作为一个逻辑工作单元的SQL语句分组,如果任何一个语句操作失败那么整个操作就被失败,以后操作就会回滚到操作前状态,或者是上有个节点。为了确保要么执行,要么不执行,

qq_27028821的博客 686

mysql事务控制语句

事务控制语句:BEGIN或START TRANSACTION;显式地开启一个事务;COMMIT;也可以使用COMMIT WORK,不过二者是等价的。COMMIT会提交事务,并使已对数据库进行的所有修改称为永久性的;ROLLBACK;有可以使用ROLLBACK WORK,不过二者是等价的。回滚会结束用户的事务,并撤销正在进行的所有未提交的修改;SAVEPOINT identifier;SAVEPOI...

javaZhong的博客 7788

MySQL事务控制

MySQL高级进阶 1.了解什么是事务控制 2.熟悉事务的特性 3.掌握事务控制的作用【重点】 什么是事务? 事务的四个特性 原子性:原子,不可再分割 MySQL的事务控制 实际演练:银行转账的例子 查看自动提交是否开启,默认为1,开启状态。 select @@autocommit; 开启一个事务 start transaction; 张三给李四转账100 update bank_accou...

ABCisCOOL的博客 725

八、MySQL之事务控制语言

新星计划第3季之第八篇

qq_43499848的博客 976

MySQL事务(2):事务控制

事务控制事务控制语句1)常用事务语句2)差异辨析3)注意事项已正确执行语句不会自动回滚rollback to savepoint并非结束事务隐式提交SQL语句 事务控制语句 MySQL默认设置下,事务都是自动提交的,即SQL执行后会立即执行commit操作。 1)常用事务语句 显式的开启一个事务需要使用begin、start transaction或者执行set autocommit=0,通过这些...

Jakob_Hu的博客 1503

mysql commit work_学习MySQL事务控制语句的用法

MySQL事务控制语句在mysql命令行的默认下,事务都是自动提交的,sql语句提交后马上会执行commit操作。开启一个事务必须使用begin,start transaction,或执行 set utocommit=0;可以使用的事务控制语句start transction | begin : 显示的开启一个事务commit (commit work)commit work与completion...

weixin_29281915的博客 824

笔记整理之 MySQL事务控制语句

MySQL事务控制语句 在mysql命令行的默认下,事务都是自动提交的,sql语句提交后马上会执行commit操作。因此开启一个事务必须使用begin,start transaction,或者执行 set autocommit=0; 可以使用的事务控制语句 start transction | begin : 显示的开启一个事务 commit (commit work) commit work与c...

csdn's blog 1万+

MySQL TCL 事务控制语言

学习java做笔记

qq_63662109的博客 791
上一篇: Mysql_DDL数据管理语言
下一篇: Mysql_SQL常见的数据类型
YanQiu_Only
博客等级 码龄10年 6粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值