MySQL事物

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

MySQL事物

1、事务概念

  1. 事务是一组SQL语句的执行,要么全部成功,要么全部失败,不能出现部分成功,部分失败的结果,保证事务执行的原子操作
  2. 事务的所有SQL语句全部执行成功,才能提交(commit)事务,把结果写回磁盘上
  3. 事务执行过程中,有的SQL出现错误,那么事务必须要回滚(rollback)到最初的状态

2、事物处理命令

#查看MySQL是否自动提交事务
SELECT @@AUTOCOMMIT;#0表示手动提交事务,1表示自动提交事务
#设置事务提交方式为手动提交方式
set autocommit=0;
#开启一个事务
BEGIN;
#提交一个事务
COMMIT; 
#回滚一个事务到初始的位置
ROLLBACK; 
#设置一个名字为point1的保存点
SAVEPOINT point1; 
#事务回滚到保存点point1,而不是回滚到初始状态
ROLLBACK TO point1; 
#设置事务的隔离级别
SET TX_ISOLATION='REPEATABLE-READ'; 
#查询事务的隔离级别
SELECT @@ TX_ISOLATION; 

3、ACID特性

  • 每一个事务必须满足下面的4个特性:
  1. 事务的原子性(Atomic):

事务是一个不可分割的整体,事务必须具有原子特性,及当数据修改时,要么全执行,要么全不执行,即不允许事务部分的完成

  1. 事务的一致性(Consistency):

一个事务执行之前和执行之后,数据库数据必须保持一致性状态。数据库的一致性状态必须由用户来负责,由并发控制机制实现。

就拿网上购物来说,你只有让商品出库,又让商品进入顾客的购物车才能构成一个完整的事务,总体上数据是不变的,保持一致性转态

  1. 事务的隔离性(Isolation):

当两个或者多个事务并发执行时,为了保证数据的安全性,将一个事物内部的操作与其它事务的操作隔离起来,不被其它正在执行的事务所看到,使得并发执行的各个事务之间不能互相影响

  1. 事务的持久性(Durability):

事务完成(commit)以后,DBMS保证它对数据库中的数据的修改是永久性

例如,事物再提交之后,在数据库刷盘过程中,即便因为故障出错,也应该能够恢复数据

  • ACID的底层实现:

ACD依靠的是数据库的redo log和undo log实现的;I是依赖数据库的锁实现的

4、事务并发存在的问题

  • 事务处理不经隔离,并发执行事务时通常会发生以下的问题:
  1. 脏读(Dirty Read):

一个事务读取了另一个事务未提交的数据

例如当事务A和事务B并发执行时,当事务A更新后,事务B查询读取到A尚未提交的数据,此时事务A回滚,则事务B读到的数据就是无效的脏数据(事务B读取了事务A尚未提交的数据)

MySQL事物

  1. 不可重复读(NonRepeatable Read):

一个事务的操作导致另一个事务前后两次读取到不同的数据

例如当事务A和事务B并发执行时,当事务B查询读取数据后,事务A更新操作更改事务B查询到的数据,此时事务B再次去读该数据,发现前后两次读的数据不一样

MySQL事物

  1. 虚读(Phantom Read)幻读:

一个事务的操作导致另一个事务前后两次查询的结果数据量不同

例如当事务A和事务B并发执行时,当事务B查询读取数据后,事务A新增或者删除了一条满足事务B查询条件的记录,此时事务B再去查询,发现查询到前一次不存在的记录,或者前一次查询的一些记录不见了

MySQL事物

脏读和不可重复读是基于数据值的错误,幻读是基于条数增加或者减少的错误

5、事务的隔离级别

  • MySQL支持的四种隔离级别是:

1、TRANSACTION_READ_UNCOMMITED

未提交读:说明在提交前一个事务可以看到另一个事务的变化。这样读脏数据,不可重复读和虚读都是被允许的

set tx_isolation='READ-UNCOMMITTED';

MySQL事物

2、TRANSACTION_READ_COMMITED

set tx_isolation='READ-COMMITTED';

已提交读:说明读取未提交的数据是不允许的。这个级别仍然允许不可重复读和虚读产生

MySQL事物

3、TRANSACTION_REPEATABLE_READ

可重复读:说明事务保证能够再次读取相同的数据而不会失败,但虚读仍然会出现

set tx_isolation='REPEATABLE-READ';

MySQL事物

  • 说明:

在目前版本中,可重复读在一定程度上可以避免insert/delete幻读,但是无法避免update幻读

4、TRANSACTION_SERIALIZABLE

串行化:是最高的事务级别,它防止读脏数据,不可重复读和虚读。

set tx_isolation='SERIALIZABLE';

MySQL事物文章来源地址https://www.toymoban.com/news/detail-404471.html

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

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

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

相关文章

  • [MySQL] MySQL中的事物

        本片文章对MySQL中的事物进行了详解。其中包含了事物的特性、为什么要有事物、查看事物版本支持、事物常见操作、事物的隔离界别等等内容进行详细举例解释。同时还深入讲解了事物的隔离性,模拟实现MVCC多版本并发控制,也讲解了RR和RC的本质区别。希望本篇文章会

    2024年02月03日
    浏览(40)
  • MySQL----事物与存储引擎

    事务是一种机制、一个操作序列,包含了一组数据库操作命令(增删改),并且把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么都执行,要么都不执行。 事务是一个不可分割的工作逻辑单元, 在数据库系统上执行并发操作时,事务是最

    2024年02月10日
    浏览(50)
  • MySQL中的事物

    目录 一、背景 二、事物的概念 概念: 回滚: 三、事物的特性 1、原子性 2、一致性 3、持久性 4、隔离性 四、并发执行的三个典型bug 1、脏读 2、不可重复读 3、幻读 五、MySQL的隔离级别 1、read uncommitted 读未提交 2、read committed 读已提交 3、repeatable read 可重复读 4、serializabl

    2024年02月05日
    浏览(45)
  • MySQL事物

    事务是一组SQL语句的执行,要么全部成功,要么全部失败,不能出现部分成功,部分失败的结果,保证事务执行的原子操作 事务的所有SQL语句全部执行成功,才能提交(commit)事务,把结果写回磁盘上 事务执行过程中,有的SQL出现错误,那么事务必须要回滚(rollback)到最初

    2023年04月08日
    浏览(38)
  • MySQL数据库之事物(详解)

    目录 一.事物的概念 二.为什么需要事物 三.事物的执行机制 四.MySQL的事物基本使用 五.事物的ACID特性 5.1一致性 六 事物的隔离级别 6.1事物隔离的原因及解决思路 6.2MySQL事物的隔离级别 🎁个人主页:tq02的博客_CSDN博客-C语言,Java,Java数据结构领域博主 🎥 本文由 tq02 原创,首发

    2024年02月16日
    浏览(49)
  • 【Mysql】事物处理(TransAction Processing)

      博主简介:想进大厂的打工人 博主主页: @xyk: 所属专栏: JavaEE初阶 最近在复习mysql,复习到了mysql事物处理(TransAction),帮自己回顾一下,如果你也想了解什么是mysql的事物处理,希望这篇文章会对你有帮助!!!正文开始: 目录 文章目录 一、事物的概念 二、为什么使

    2023年04月18日
    浏览(43)
  • Mysql的引擎有哪些?支持事物么?DB储存引擎有哪些?

    Mysql的引擎有哪些?支持事物么?DB储存引擎有哪些? MySQL有多种存储引擎,每种存储引擎有各自的优缺点,可以择优选择使用: MyISAM、InnoDB、MERGE、MEMORY(HEAP)、BDB(BerkeleyDB)、EXAMPLE、FEDERATED、ARCHIVE、CSV、BLACKHOLE。 MySQL支持数个存储引擎作为对不同表的类型的处理器。MySQL存储

    2024年02月11日
    浏览(48)
  • 【Spring 事务详解】声明式事务概念

    个人名片: 🐼 作者简介:一名大三在校生,喜欢AI编程🎋 🐻‍❄️ 个人主页🥇: 落798. 🐼 个人WeChat:hmmwx53 🕊️ 系列专栏:🖼️ 零基础学Java——小白入门必备🔥 重识C语言——复习回顾🔥 计算机网络体系———深度详讲 HCIP数通工程师-刷题与实战🔥🔥🔥 微信小程

    2024年04月12日
    浏览(46)
  • 事务相关概念

    事务:逻辑上的一组操作,这些操作要么都成功,有一个失败所有都失败 1、脏读:在数据库访问中,事务T1将某一值修改,然后事务T2读取该值,此后T1因为某种原因撤销对该值的修改,这就导致了T2所读取到的数据是无效的。 2、不可重复读:指在数据库访问中,一个事务范

    2023年04月17日
    浏览(30)
  • 补偿事务基本概念

    ACID 即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability) 原子性:整个事务中的所有操作,要么全部完成,要么全部失败,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像

    2024年02月11日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包