MySQL数据库事务控制

news2024/10/6 8:39:10

目录

一、事务控制概念

二、事务控制特性

三、事务控制相关命令

1、测试begin和commit(开始事务和提交事务)

2、测试事务回滚rollback

四、总结

1、事务的ACID特性

2、事务之间的相互影响

3、事务的隔离级别


一、事务控制概念

       在MySQL中用于处理操作量大、复杂度高的数据。比如在人员管理系统中,删除一个人员,既需要删除人员的基本信息,也需要删除和该人员相关的信息,如信箱、文章、发起的事务等等,这些数据的操作语句就构成了一个事务。

       当然只有使用了Innodb数据引擎的数据库或表才支持事务,在使用过程中药保证成批的SQL语句要么全部执行,要么全部执行,这样的事务处理可以维护数据库数据的完整性。一般在事务中会出现insert、update、delete、select语句。

二、事务控制特性

原子性:一个事务中的所有操作要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚到事务开始前的状态,就像这个事务从来没有执行过一样。

一致性:在事务开始之前和事务结束之后,数据库的完整性没有被破坏。这表示写入额资料必须完全符合所有的预设规则,包含资料的精确度、串联性以及后续数据库可以自发性地完成预定工作。

隔离性:数据库允许多个并发事务同时对其数据进行读写和修改能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务的隔离又分为不同级别,包括读未提交、读提交、可重复读和串行化。

持久性:事务处理结束后,对数据的修改应该是永久的即便系统故障也不会丢失。

三、事务控制相关命令

  • Begin开始事务
  • Rollback回滚事务
  • Commit提交事务
  • Set autocommit=0 禁止自动提交模式
  • Set autocommit=1开启自动提交模式 

1、测试begin和commit(开始事务和提交事务)

准备个数据表:

示例1:

begin开启事务,修改数据未提交,退出后重新连接查看,数据未改变。

 

示例2: 

begin开启事务,修改数据后commit提交,退出后重新连接查看,数据改变。

示例3: 

当前全局事务隔离级别和会话事务隔离级别都为RU(未提交读) ,允许脏读。

则事务A在提交前,事务B可以看到A未提交的修改。

示例4:

全局事务隔离级别和会话事务隔离级别都为RC(提交读) 防止脏读,但不可重复读。

事务A在提交前的修改,事务B看不到。

事务A提交后,事务B可以看到修改的数据。

示例5: 

全局事务隔离级别和会话事务隔离级别都为RR(可重复读) 可以防止脏读和不可重复读。

事务A修改数据未提交,开启事务B进行查看,看到的是修改前的数据。

事务A提交后,事务B查看到的仍然是修改前的数据。

事务B在结束前,查询到的结果是一致的。事务A做的修改不影响事务B的查询结果。

2、测试事务回滚rollback

rollback:回滚会结束用户的事务,并撤销正在进行的所有未提交的修改。

四、总结

1、事务的ACID特性

  • 原子性(Atomicity)
  • 一致性(Consistency )
  • 隔离性(Isolation)
  • 持久性(Durability)

2、事务之间的相互影响

当多个客户端并发地访问同一个表时,可能出现下面的一致性问题:

  • 脏读
  • 不可重复读
  • 幻读
  • 丢失更新

3、事务的隔离级别

  • 未提交读(Read Uncommitted(RU)) :允许脏读。
  • 提交读(Read Committed (RC)) :防止脏读。
  • 可重复读(Repeatable Read(RR)):—mysql默认的隔离级别,防止脏读和不可重复读。
  • 串行读(serializable):—相当于锁表,可以防止脏读、不可重复读和幻读,(事务串行化)会降低数据库的执行效率。

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

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

相关文章

上海大治河二线船闸总体设计与结构计算

目录 第一章 设计基本资料 1 1.1工程概况 1 1.2 货运量预测 1 1.3 建筑物设计等级 1 1.4 通航情况及计算参数的选取 1 1.5 设计船型 2 1.6 特征水位表 2 1.7 水文气象资料 3 1.8 工程地质 3 第二章 总体设计 4 2.1 船闸地理位置确定 4 2.2 船闸线、级数确定 5 2.3 船闸的基本尺…

【能效管理】变电所运维云平台在上海某医院的设计分析

摘要:本文概述了变电所电力运维技术,分析了医院变电所中存在的技术设备老化和技术荷载不足的技术性问题,并从主变低压进出线路监测故障、环境监测故障、设备档案记录、运维排班记录、分析报告五个方面探讨了变电所电力运维技术的具体应用。变…

1. 语音类实现 (实现读取wav/pcm,STFT)

[C 基于Eigen库实现CRN前向推理] 第一部分:WavFile.class (实现读取wav/pcm,实现STFT) 前言:(Eigen库使用记录)第一部分:WavFile.class (实现读取wav/pcm,实现STFT)第二部分:Conv2d实现第三部分:TransposedConv2d实现…

荧光标记肽(Arg)9, FAM-labeled

(Arg)9, FAM-labeled 是一种带有 FAM 标记的 ARG,属于细胞穿透肽 (CPP)。CPPs 已成为一种强大的工具,用于将生物活性物质输送到完整细胞胞质中。(Arg)9, FAM-labeled, a cell-penetrating peptide (CPP), is a nona-arginine (ARG) with FAM label. CPPs…

mac上的python2安装

iiPython Release Python 2.7.18rc1 | Python.orgThe official home of the Python Programming Languagehttps://www.python.org/downloads/release/python-2718rc1/不小心把mac上的python2给删除了,发现老的nodejs项目需要pytho2,这下晕了,…

秸秆制粒机的总体设计

目 录 摘 要 I Abstract II 第一章 绪论 1 1.1选题背景及意义 1 1.2国内外生物质制粒机的发展现状 4 1.2.1国外发展现状 4 1.2.2国内发展现状 5 1.3目前主要的制粒机类型及其制粒方法 9 1.3.1活塞式制粒机 9 1.3.2螺旋式制粒机 10 1.3.3模压颗粒制粒机 10 1.4秸秆燃料制粒加工技…

MES工单工艺线路条码系统NetMVC源码 MES条码管理系统源码

系统详情功能: 生产管理、基础数据维护、设备统计、新增设备统计、水质地图、故障统计、设备分布、耗材统计 生产管理:工单管理、工单检测、工单查询、工单生产、工位扫描、工位设置、滤芯包装、 包装打印、包装管理、条码管理、生产进度图 基础数据维…

性能测试之cpu 分析

cpu 架构 --中央处理器 运算器: 真正进行计算的单元控制器: leader寄存器: 存储 指令、数据、地址时钟 控制程序运行时长 内存 程序代码、网络数据,外部数据进入cpu的桥梁,内存的速度,要比cpu的速度 cp…

基于PHP+MySQL企业网络推广平台系统的设计与实现

企业网络推广平台系统具有很强的信息指导性特征,采用PHP开发企业网络推广平台系统 给web带来了全新的动态效果,具有更加灵活和方便的交互性。在Internet中实现数据检索越来越容易,可以及时、全面地收集、存储大量的企业资源信息以及进行发布、浏览、搜索相关的信息。让企业、个…

当世界杯撞上电商销售旺季,独立站卖家如何爆单不爆冷?

今年的世界杯频频爆冷,就像如今的天气一样,令人瑟瑟发抖。由于卡塔尔当地的特殊气候,2022年世界杯选择在冬季举行,于是就有了电商销售旺季遇上世界杯。两股热度叠加,造就了空前的销售时机。 感恩节、黑五、网一&#x…

CSDN【top1】Pytest接口测试框架实战项目搭建

一、前言 想想之前玩的框架,做的项目都是把数据用例冗余到一起的,不符合数据用例分离的思想,所以准备基于pytest搭建个测试框架,支持数据用例分离,接下来会用一系列文章逐步介绍整个框架是怎么搭建起来的。 二、项目结…

[附源码]计算机毕业设计springboot高校体育场馆管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

TMA三均线股票期货高频交易策略的R语言实现

趋势交易策略是至今应用最广泛以及最重要的投资策略之一,它的研究手段种类繁多,所运用的分析工具也纷繁复杂,其特长在于捕捉市场运动的大方向。股指期货市场瞬息万变,结合趋势分析方法,量化投资策略能够得到更有效的应…

项目使用smart-doc+Torna自动化创建api文档

首先部署Torna,我这里是用docker部署的 准备工作:1 docker 环境 2 torna 所需的sql脚本(可以去github 找最新的) DROP TABLE IF EXISTS compose_additional_page; CREATE TABLE IF NOT EXISTS compose_additional_page (id bigi…

jupyter使用教程及python语法基础

前言 上回说到搭建jupyter环境,今天的文章主要就是熟悉jupyter上的基本操作,以及python的一些基础语法。 正文 1、熟悉jupyter界面使用方法 通过命令行进入jupyter后,选择python3。 进去之后就是如下界面,要熟悉以下操作。当…

SAP ABAP——数据类型(二)【TYPES自定义数据类型详解】

💬个人网站:【芒果个人日志】​​​​​​ 💬原文地址:SAP ABAP——数据类型(二)【TYPES自定义数据类型详解】 - 芒果个人日志 (wyz-math.cn) 💂作者简介: THUNDER王,一名…

python学习笔记(11)---(模块与包)

第九章 模块与包 1.模块(modules) (1)概念:将实现某一特定功能的代码放置在一个文件中,以便于其他程序进行导入使用,可以避免函数名、变量名的冲突,该文件称为模块,拓展…

RtspServer之LibRtsp解决闪退 新增鉴权(用户名密码登录)

编程语言:C 目标平台:arm(hi3519)注:因为代码是纯C语言按道理可以移植到各种平台 基础库:librtsp(存在功能补全,有一定的bug) 因为项目需求需要在海思平台实现IPC…

C++ Reference: Standard C++ Library reference: Containers: list: list: crend

C官网参考链接&#xff1a;https://cplusplus.com/reference/list/list/crend/ 公有成员函数 <list> std::list::crend const_reverse_iterator crend() const noexcept; 返回反向结束的常量反向迭代器 返回一个const_reverse_iterator&#xff0c;指向容器中第一个元素…

领悟《信号与系统》之 采样定理

采样定理采样定理一、采样定理结论二、奈奎斯特间隔和频率计算公式及例题&#xff1a;三、信号自然采样&#xff08;脉冲采样&#xff09;四、信号理想采样&#xff08;冲激采样&#xff09;采样定理 连续时间信号也叫模拟信号。在一定条件之下&#xff0c;模拟信号可以用该信…