首页
学习
活动
专区
圈层
工具
发布

MySQL数据库——事务操作-begin-commit-rollback

什么是事务? 事务必须具备以下四个属性,简称ACID 属性。 原子性(Atomicity) 事务是一个完整的操作,事务的各步操作是不可分的(原子的),要么都执行,要么都不执行。...持久性(Durability) 事务完成后,它对数据库的修改被永久保持。 事务(TRANSACTION)是作为单个逻辑工作单元执行的一系列操作。...事务是一个不可分割的工作逻辑单元 。...撤销以上操作 重新开启并执行updata语句,提交 提交事务后可以看到数据改变: sql事务应用场景 SQL事务的应用场景包括但不限于以下几个方面: 银行交易:确保资金的准确性和一致性,例如转账操作。...总结 事务就是为了方便确认一些列的DML语句是否成功,如果都成功就commit,如果有任何一个失败则rollback。

74410
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【MySQL】MySQL的事务

    什么是事务?  在MySQL中的事务(Transaction)是由存储引擎实现的,在MySQL中,只有InnoDB存储引擎才 支持事务。...或 START TRANSACTION 2、提交事务:Commit Transaction 成功的结束,将所有的DML语句操作历史记录和底层硬盘数据 来一次同步 命令:COMMIT 3、回滚事务:Rollback...Transaction 失败的结束,将所有的DML语句操作历史记录全部清空 命 令:ROLLBACK 之前的所有SQL操作其实也有事务,只是MySQL自动帮我们完成的,每执行一条SQL时MySQL就...帮我们自动提交事务,因此如果想要手动控制事务,则必须关闭MySQL的事务自动提交。...commit;     -- 如果转账中的任何一条出现问题,则回滚事务 rollback; 事务的特性 事务的隔离级别  solate,顾名思义就是将事务与另一个事务隔离开,为什么要隔离呢?

    4.4K20

    MySQL的事务

    事务就是要保证一组数据库操作,要么全部成功,要么全部失败,在MySQL中,事务支持是在引擎层实现的 优点:支持严格的ACID属性(原子性(atomicity,或称不可分割性)、一致性(consistency...一致性(consistency):在事务执行前后,数据库一致性没有被破坏 隔离性(isolation):数据库中的事务一般是并发的,隔离性是指并发的两个事务的执行互不干扰,一个事务不能看到其他事务运行过程的中间状态...* from user; insert into user(username) values('张三'); select * from user; commit; select * from...commit; select * from user; 事务A读取不到已经提交的事务,这就是可重复读 串行化(Serializable ):“写”会加“写锁”,“读”会加“读锁”。...* from user; commit; 张三 只有当事事务A的操作提交过后,事务B才会继续执行 在事务的并发操作中可能会出现脏读,不可重复读,幻读 什么是脏读?

    1.1K20

    图解MySQL | MySQL组提交(group commit)

    前提: 以下讨论的前提 是设置MySQL的crash safe相关参数为双1: sync_binlog=1 innodb_flush_log_at_trx_commit=1 背景说明: WAL机制 (Write...,所以MySQL可能会在重启后回滚该组事务 Sync 阶段 (图中第二个渡口) 这里为了增加一组事务中的事务数量,提高刷盘收益,MySQL使用两个参数控制获取队列事务组的时机: binlog_group_commit_sync_delay...binlog中已经有了事务记录,MySQL会在重启后通过Flush 阶段中Redo log刷盘的数据继续进行事务的提交 Commit 阶段 (图中第三个渡口) 首先获取队列中的事务组 依次将Redo log...中已经prepare的事务在引擎层提交(图中InnoDB Commit) Commit阶段不用刷盘,如上所述,Flush阶段中的Redo log刷盘已经足够保证数据库崩溃时的数据安全了 Commit阶段队列的作用是承接...binlog_group_commit_sync_delay,在MySQL 5.7.19中,如果该参数不为10的倍数,则会导致事务在Sync 阶段等待极大的时间,表现出来的现象就是执行的sql长时间无法返回

    4.7K10

    【MySQL高级】MySQL的事务

    什么是事务? 在MySQL中的事务(Transaction)是由存储引擎实现的,在MySQL中,只有InnoDB存储引擎才 支持事务。...或 START TRANSACTION 2、提交事务:Commit Transaction 成功的结束,将所有的DML语句操作历史记录和底层硬盘数据 来一次同步 命令:COMMIT 3、回滚事务:Rollback...Transaction 失败的结束,将所有的DML语句操作历史记录全部清空 命 令:ROLLBACK 之前的所有SQL操作其实也有事务,只是MySQL自动帮我们完成的,每执行一条SQL时MySQL就...帮我们自动提交事务,因此如果想要手动控制事务,则必须关闭MySQL的事务自动提交。...commit;     -- 如果转账中的任何一条出现问题,则回滚事务 rollback; 事务的特性 事务的隔离级别  Isolate,顾名思义就是将事务与另一个事务隔离开,为什么要隔离呢?

    1.4K20

    MySQL组提交(group commit)

    前提: 以下讨论的前提 是设置MySQL的crash safe相关参数为双1: sync_binlog=1 innodb_flush_log_at_trx_commit=1 背景说明: WAL机制 (Write...,所以MySQL可能会在重启后回滚该组事务 Sync 阶段 (图中第二个渡口) 这里为了增加一组事务中的事务数量,提高刷盘收益,MySQL使用两个参数控制获取队列事务组的时机: binlog_group_commit_sync_delay...binlog中已经有了事务记录,MySQL会在重启后通过Flush 阶段中Redo log刷盘的数据继续进行事务的提交 Commit 阶段 (图中第三个渡口) 首先获取队列中的事务组 依次将Redo log...中已经prepare的事务在引擎层提交(图中InnoDB Commit) Commit阶段不用刷盘,如上所述,Flush阶段中的Redo log刷盘已经足够保证数据库崩溃时的数据安全了 Commit阶段队列的作用是承接...binlog_group_commit_sync_delay,在MySQL 5.7.19中,如果该参数不为10的倍数,则会导致事务在Sync 阶段等待极大的时间,表现出来的现象就是执行的sql长时间无法返回

    3K20

    mysql事务的前世今生-事务简介

    大家好,我是热心的大肚皮,皮哥。 什么是事务 起源 对于程序猿来说,任务就是把现实世界的业务场景映射到数据库世界中。...持久性(Durability) 指数据修改完成后,都应该在磁盘中保留下来,不论发生什么事故,本次操作的影响不会丢失。 需要ACID一个或者多个特性的数据库的操作就是事务。...事务的状态 分为以下几个: 活动的(active):事务对应数据库操作在执行过程中。...部分提交的(partially committed):事务的最后一个操作完成,但是都在内存中,并没有刷新到磁盘。 失败的(failed):事务处于活动或者部分提交时,遇到了停电,系统错误等。...中止(aborted):事务执行了半截而变为失败的状态。 提交的(committed):刷到磁盘。 下篇预告【mysql事务的前世今生-redo日志】

    1.2K20

    MySQL的事务概念

    --开启一个事务 BEGIN;--等价于 START TRANSACTION; --执行我们需要的SQL --提交事务 COMMIT; --回滚事务 ROLLBACK; 我们来模拟一下A的两个账户(CMBC...TO A; SELECT * FROM BANK_CMBC; SELECT * FROM BANK_ICBC; COMMIT; # 这个时候我们的记录是多少?...其实每个语句都是原子性的,他们被隐式的加入了 BEGIN; START TRANSACTION 开启事务,并COMMIT; 就好像: BEGIN; UPDATE BANK CMBC SET BALANCE...持久性 俗话说就是保证及时落盘; 持久性是为了保证断点等异常的情况,还能保证我们commit的数据不丢失!并且不会回滚! 不会出现我commit之后,重启后又被回滚了!...请查阅我下一个博客 链接: 详解MySQL脏读幻读不可重复读及事务的隔离级别和MVCC实现

    98320

    MySQL事务

    事务 为保证业务的完整性,当一条语句出现错误,则此步骤全部回退 原子性(Atomicity):事务中的全部操作在数据库中是不可分割的,要么全部完成,要么均不执行 一致性(Consistency):...几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致 隔离性(Isolation):事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务必须是透明的 持久性(Durability):...对于任意已提交事务,系统必须保证该事务对数据库的改变不被丢失,即使数据库出现故障 提交 默认隔离级别可重复读,若事务级别为读已提交,则终端二不commit的情况下可以读取到终端一的数据。...### 终端一 begin; 开启 insert into students (sname) value ("sss"); commit; 只有commit才表示执行成功 ### 终端二 mysql>...insert into students (sname) value ("kksk"); 测试语句 ### 终端二 mysql> select * from students; +----+-----

    3.1K40

    【MySql】MySql的事务基础篇

    所以关系型数据库提供了事务,MySQL一般设置的更完善一些。...MySQL提供一种机制,保证我们达到这样的效果。事务还规定不同的客户端看到的数据是不相同的 事务就是要做的或所做的事情,主要用于处理操作量大,复杂度高的数据。...对于一个MuSQL数据库,可不止一个事务在运行,同一时刻,甚至会有大量的请求被包装成事务,在向MySQL服务器发起事务处理请求时,而每条事务至少有一条SQL,最后很多条SQL,这样如果大家都访问同样的表数据...为什么会出现事务 事务被MySQL编写者设计出来,本质是为了当应用程序访问数据库的时候,事务能够简化我们的编程模型,不需要我们去考虑各种各样的潜在错误和并发问题,当我们使用事务时,要么提交,要么回滚,...事务的提交方式 事务的提交方式常见的有两种:自动提交、手动提交 查看事务提交方式: show variables like 'autocommit'; 用 SET 来改变 MySQL 的自动提交模式

    52230

    MySQL的事务属性

    1.0 什么是事务 1.事务:事务是数据库系统区别于其他一切文件系统的重要特性之一 2.事务是一组具有原子性的SQL语句,或是一个独立的工作单元 1.1 MySQL事务的特性 原子性(ATOMICITY...,后果你懂的… 一致性(CONSISTENCY):数据库的完整性不发生改变 举个例子 不管怎么转钱,总的余额不变 隔离性(ISOLATION):一个事务对数据库中的数据修改,未提交事务之前对于其他事务不可见...SQL标准的四种隔离级别 未提交读:简称脏读 已提交读:只能看到已提交事物的修改 可重复读:多次读取事物的数据是一致的,包括已提交的事务 可串行化:读取的每一行进行加锁 可能会导致锁超时,除非严格要求数据一致性...事务持久性(DURABILITY):一旦事务提交,其所做的修改会永久的存入数据库,即使系统崩溃 数据也不会丢失. 1.2 什么是大事务 运行时间比较长,操作的数据量比较多的事务....大事务可能会造成的影响 锁定太多的数据,造成大量的阻塞和锁超时 回滚时所需要的时间较长 执行时间长,容易造成主从延迟 1.3 如何处理大事务 避免一次处理太多的数据 移除不必要在事务中的

    1.5K40

    MySQL事务的讲解

    对MySQL数据库中的事务操作、存在的问题和相应的隔离级别等知识点进行整理,通过实例进行说明MySQL事务主要用于处理操作量大,复杂度高的数据。...MySQL事务具有一些基本特性:在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部执行,要么全部不执行。...提交读:只能读取到其他事务已经提交的数据,是Oracle等数据库默认的级别。可重复度:在同一个事务内的查询都是在事务开始时刻一致的,是MySQL的InnoDB引擎默认级别。...另外还有一点,在commit命令生效后,由于持久化的特性,rollback是无法回滚回去的。...mysql> commit;Query OK, 0 rows affected (0.04 sec)mysql> rollback;Query OK, 0 rows affected (0.01 sec

    78910

    MySQL——事务

    事务概述 事务是数据库系统区别于其他一切文件系统的重要特性之一 事务是一组具有原子性的SQL语句,或是一个独立的工作单元 事务特点 1....原子性 一个事务必须被视为不可分离的最小工作单位,整个事务中的所有操作要么全部提交成功,要么全部失败,对于一个事务来说,不可能只执行其中的一部分操作。...3.隔离性(ISOLATION) 隔离性要求一个事务对数据库中数据的修改,在未提交完成之前对于其他事务是不可见的。...大事务 运行的时间比较长,操作的数据比较多的事务 风险: 锁定太多的数据,造成大量的阻塞和锁超时 回滚所需要的时间比较长 执行时间长,容易造成主从延迟 如何处理大事务?...避免一次处理太多的数据 移出不必要在事务中的SELECT操作

    2.3K20

    Mysql事务

    特性(ACID) 原子性:一系列事件,要么全部完成,要么全部不完成 一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏 持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失...隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。...账号2 人民币50元 public static void main(String[] args) throws SQLException { String url = "jdbc:mysql...ps2 = conn.prepareStatement(sql2); ps2.executeUpdate(); //提交 conn.commit...,不可重复读,虚读 Serializable隔离级别下的事务具有最高的安全性,但是,由于事务是串行执行,所以效率会大大下降 建议细看:事务隔离级别的图文 脏读:一个事务读取到另外一个事务未提交的数据

    2.3K20

    MySQL 事务

    事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。... ♞ 持久性:即事务完成后,对数据库数据的修改被持久化存储 1.2 事务控制   在 MySQL 命令行的默认设置下,事务都是自动提交的,即执行 SQL 语句后就会马上执行 COMMIT 操作。...1.2.1 事务控制语句 BEGIN 或 START TRANSACTION 显式地开启一个事务; COMMIT 或 COMMIT WORK 提交事务,并使已对数据库进行的所有修改成为永久性的;...1.2.2 事务处理 ☞ 用 BEGIN, ROLLBACK, COMMIT 来实现 begin # 开始一个事务 // TODO··· rollback # 事务回滚 commit # 事务提交 ☞...用 BEGIN, ROLLBACK, COMMIT 来实现只将当前的作为一个事务! 1.2.3 事务隔离级别   对于两个并发执行的事务,如果涉及到操作同一条记录的时候,可能会发生问题。

    2.9K31

    MySQL 事务

    小伙手撕MySQL事务,发生了什么? 事务的4大特性 A (Atomicity) 原子性:事务的操作序列不可再拆分:这也是都成功都失败的意思。...事务只能读取其他事务提交之后的数据,我们来模拟以下这个过程会出现的问题: 小伙手撕MySQL事务,发生了什么?...读取数据事务开始的时候,MySQL为事务创建了快照,也就是在事务内查询的数据都是快照版本,这样就可以保证数据的一致性。 那么快照又是如何实现的呢?...小伙手撕MySQL事务,发生了什么? MVCC 的查找规则1:只能查找创建时间小于等于当前事务 ID 的数据 小伙手撕MySQL事务,发生了什么?...事务5,尝试修改数据 小伙手撕MySQL事务,发生了什么? 此时回到事务2再次查询数据 小伙手撕MySQL事务,发生了什么?

    2.3K40

    MySQL事务

    一、事务概述 1.1、什么是事务 MySQL 事务主要用于处理操作量大,复杂度高的数据。...1.3、事务提交方式 mysql中有两种事务提交方式: 手动提交 自动提交 二、事务手动提交 2.1、手动提交的过程 事务执行成功的过程:开启事务->执行多条件SQL语句->成功->事务提交 事务执行失败的过程...:开启事务->执行多条件SQL语句->失败->事务回滚 2.2、语法格式 格式: start transaction; #开启事务 commit; #提交事务 rollback; #回滚事务 案例...(0.01 秒) #提交事务 mysql> commit; Query OK, 0 rows affected (0.08 秒) #查看帐户 mysql> select * from yh; +---...> commit; Query OK, 0 rows affected (0.09 秒) 在A窗口里执行,添加id为3的帐户 mysql> insert into yh values(3,'王五',1000

    5.2K10

    MySQL事务

    在本文中,我们将深入探讨MySQL事务的特点和用途,以及如何在MySQL中执行事务。...保证数据安全性:通过使用事务,可以确保对数据的修改是原子的,从而保证数据的安全性。 三、如何在MySQL中执行事务?...如果所有操作都成功执行,可以使用以下语句提交事务: COMMIT; 如果某个操作失败,可以使用以下语句回滚事务: ROLLBACK; 4.关闭事务:一旦事务被提交或回滚,可以使用以下语句结束事务: COMMIT...; -- 或者 ROLLBACK; 四、MySQL事务的隔离级别 MySQL事务的隔离级别决定了事务在执行过程中如何处理并发操作和数据一致性问题。...五、MySQL事务的优点和注意事项 MySQL事务具有以下优点: 数据一致性:通过确保一系列数据库操作要么全部成功,要么全部失败,保持数据的一致性。

    1.4K10

    Mysql中的事务

    因此在使用数据库过程中,对于修改只要提交成功,数据就可以安全的保存,只要回滚就可以回到,保存点事务之初 二:如何使用事务: 1.查看支持事务的存储引擎:在MySQL中支持事务的存储引擎是InnoDB...,可以通过 show engines;  2.语法: 开始⼀个新的事务:start  transaction 或者 begin; 提交当前事务,并对更改持久化保存:commit;...=OFF; # ⽅式⼆ 注意: 只要使⽤ START TRANSACTION 或 BEGIN 开启事务,必须要通过 COMMIT 提交才会持久 化,与是否设置 SET autocommit ⽆关。...(总结:开启事务落盘必须提交)  三:事务的隔离级别: 1.什么是隔离级性: MySQL服务可以同时被多个客户端访问,每个客户端执行的DML语句以事务为基本单位,那么不同的客户端在对同⼀张表中的同...2.隔离级别: 事务间不同程度的隔离,称为事务的隔离级别;不同的隔离级别在性能和安全方面做了取舍,有的隔离级别注重并发性,有的注重安全性,有的则是并发和安全适中;在MySQL的InnoDB引擎中事务的隔离级别有四种

    1.6K10
    领券