【MySQL】事务是什么?事务的特性又是什么?

这篇具有很好参考价值的文章主要介绍了【MySQL】事务是什么?事务的特性又是什么?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

✍事务是什么?

事务是由一个或多个SQL语句构成的,在事务中,这些的SQL不可分割,是一个整体,整个事务类似于物理中的原子结构,不可再分。

简单概括,就是说,将多个语句给打包成一个整体了,在这个整体中的语句,要么一条都不执行,要么全部执行,不存在部分执行或者部分不执行的情况。

这样的定义,有效的避免了部分执行,部分未执行而产生的一些“中间状态·”引起的问题

举例来说:在转账系统中,支付者支付金钱和接收者接收金钱就是一个“事务”,他们两者只会同时执行或同时不执行,不会存在支付者支付金钱后,接收者没有接收到金钱这样的情况。

注意:全部不执行
这里的全部不执行,并非字面的一个语句都不执行,在进行操作时,SQL语句会一条一条的执行,当数据库遇到一些特殊情况时(例如:程序崩溃,主机断电,系统崩溃,网络断开…),数据库会将先前执行的SQL语句给一句一句恢复回去,这里的操作叫做“回滚”,使程序恢复如初,看起来就好像是一句都没有执行

回滚
为什么能实现回滚操作呢?是因为数据库在事务时,会记录日志(写入到硬盘)当事务执行完后,并没有差错,就会删除掉。

如果过程中出现了问题,就会根据日志来进行处理

  • 之前进行过新增操作,就会把数据删除
  • 之前进行过更改数据,就会恢复数据
  • 之前进行过删除操作,就会新增删除的数据
  • 之前进行过查询操作,没有影响,不会做出操作

✍事务的特性(四个)

  • 原子性 :指事务不可再分的最小单位。事务中的操作只有全部发生和全部不发生这两种情况。
  • 一致性:指事务执行之前和执行之后,数据是一致的。
    例如转账时,A转给B,500元,那么A的账户就会少500,B的账户就会多500.
  • 持久性:执行事务对数据的修改存放于硬盘上,会在硬盘上持久存在,下次程序重启,机器重启对数据的修改还是存在的。
  • 隔离性:一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
    会”加锁“,防止脏读情况的发生,从而提高了并发处理的准确性。
    “写加锁”,写的时候,不能读取数据。

✍事务并发时出现的问题

1.脏读
当事务A在对数据进行修改时,事务A等待一段时间,此时在等待过程中,事务B记录下了A对数据修改的结果,等待时间过后,事务A继续修改,此时事务B误将这次的结果作为最终结果记录下来。
这就是脏读。

2.不可重复读
存在三个事务ABC。
事务A对数据进行修改,接下来事务B进行读取数据(事务B的多个SQL都要进行读操作),在执B的过程中,又有一个事务C对数据进行了修改。

就会使B里面的不同读操作,读出来的结果不一样。
【MySQL】事务是什么?事务的特性又是什么?,mysql,数据库,php

所以再进一步规定。进一步加锁–读加锁

3.幻读

事务A先修改并提交数据。事务B进行读取数据。此时事务C没有修改事务B读取的数据,但是给对应的表进行了新增数据/删除数据等操作…导致事务B读到的数据集不同(已有的数据是一致的,只是数据的条数增加/减少),可以视为是“不可重复读”的特殊情况。

解决幻读:
所以的事务,“串行化”使事务严格按照一个接一个进行执行,此时完全没有并发了,执行的效率最低,同时事务的隔离性最高。

总结:

  1. 脏读–写加锁
  2. 不可重复读–读加锁
  3. 幻读–串行化

在解决实际问题中,要想要保证数据的准确性,就需要牺牲一些效率。具体跟业务场景所定。

✍事务的隔离性

MySQL提供了四个隔离级别。

  1. read uncommitted允许读取其他事务未提交的数据 -->
    存在: 脏读+不可重复读+幻读 。
    并发程度最高,隔离性最低.
  2. read committed:只能读取其他事务提交后的数据 -->
    解决了脏读,存在不可重复读,幻读。
    并发程度降低,隔离性提高。
  3. repeatable read:针对读操作和写操作都加了锁 -->
    解决了脏读+不可重复读,存在幻读。
    并发程度又降低,隔离性又提高。
  4. 串行化(serializable):所有的事务都是串行执行的–>
    解决了脏读+不可重复读+幻读。
    并发基本没有,隔离性最高

以上就是本文所有内容,如果对你有帮助的话,点赞收藏支持一下吧!💞💞💞文章来源地址https://www.toymoban.com/news/detail-844524.html

到了这里,关于【MySQL】事务是什么?事务的特性又是什么?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Mysql数据库 第13章】MySQL的事务、事务的隔离级别、事务的保存点

    💖Spring中的创建对象的三种方式、第三方资源配置管理详细描述及使用(XML版完结篇) 💖Spring中的bean的配置、作用范围、生命周期详细描述及使用(XML版上篇) 💖

    2023年04月20日
    浏览(57)
  • 简单认识MySQL数据库事务

    MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在战舰登录系统中, 要删除一艘战舰,即需要删除战舰的基本资料,又需要删除和该战舰相关的信息,如舰长, 登记船员等等。这样,这些数据库操作语句就构成一个事务! ●事务是一种机制、一个操作序列,包

    2024年02月16日
    浏览(44)
  • 【MySQL数据库 | 第十五篇】事务

        目录    前言:  介绍事务:  控制事务:  事务四大特性:  并发事务问题:  事务隔离级别: 总结:   这章我们将进入到MySQL基础篇的最后一章:事务,希望大家可以坚持下去,跟着我一起走完MySQL的学习之旅。 MySQL是一种关系型数据库管理系统,支持事务管理。 事

    2024年02月08日
    浏览(57)
  • Go 语言实现 MySQL 数据库事务

    MySQL事务是指一组数据库操作,它们被视为一个逻辑单元,并且要么全部成功执行,要么全部回滚(撤销)。事务是数据库管理系统提供的一种机制,用于确保数据的一致性和完整性。 事务具有以下特性(通常由ACID原则定义): 原子性(Atomicity):事务中的所有操作要么全

    2024年02月08日
    浏览(47)
  • 【Spring/MySQL数据库系列】数据库事务的特点与隔离级别

    ⭐️ 前面的话 ⭐️ 本文已经收录到《Spring框架全家桶系列》专栏,本文将介绍有关数据库事务的特点以及隔离级别。 📒博客主页:未见花闻的博客主页 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 📌本文由 未见花闻 原创, CSDN 首发! 📆首发时间:🌴2023年5月20日🌴 ✉️坚

    2024年02月05日
    浏览(55)
  • C# 从代码入门 Mysql 数据库事务

    在业务开发中,使用数据库事务是必不可少的。而开发中往往会使用各种 ORM 执行数据库操作,简化代码复杂度,不过,由于各种 ORM 的封装特性,开发者的使用方式也不一样,开发者想要了解 ORM 对事务做了什么处理是比较难的。因此,本文介绍数据库事务基础、Ado.net 事务

    2024年02月04日
    浏览(55)
  • 【后端面经-数据库】MySQL的事务隔离级别简介

    目录 0. 事务的概念 1. 三类问题 2. 事务隔离级别 3. 操作指令 4. 总结 5. 参考博文 事务指的是一连串的集中操作指令,一个事务的执行必须执行完所有的动作才能算作执行结束。事务具有四个特点,简记作 ACID : A -Atomicity: 原子性,事务的执行必须保证所有的动作都执行完毕;

    2024年02月08日
    浏览(49)
  • 【MySQL】一文带你了解数据库索引与事务

    数据库索引是一种提高数据库查询效率的数据结构。它可以快速地定位和访问数据库中的数据,从而大大提高数据库查询的速度和效率。数据库索引可以根据不同的查询需求构造多个索引,以最大化提高查询效率。 数据库索引基于各种字段来创建,在查询时可以通过索引直接

    2024年02月09日
    浏览(49)
  • 初识mysql数据库之事务的概念及操作

    目录 一、数据库多客户端访问问题 1. 数据库的CURD无限制带来的问题 2. 如何解决CURD导致的问题 二、事务的概念 1. 什么是事务 2. 事务的四个属性 3. mysql对事务的管理 4. 为什么会有事务 5. 事务的版本支持 三、事务的操作 1. 事务提交方式 2. 事务操作的准备工作 2.1 数据库是网

    2024年02月15日
    浏览(44)
  • MySQL:事务、索引、用户管理、备份、数据库设计(三大范式)

    事务 (transaction):要么都成功,要么都失败。 核心 :将一组 SQL 放在一个批次中去执行。 原则 ACID :原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability)。 原子性 :一个事务中的所有步骤 要么都 成功, 要么都 失败,不能只成功一个步骤。 一致性 :包括

    2023年04月26日
    浏览(81)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包