mysql事务的简单理解

author author     2022-12-05     145

关键词:

一、什么是事务。

  1. 知道事务,要先了解 mysql 的引擎,在 5.5 版本以前 mysql 的引擎默认是 MyISAM,到了 Mysql5.5 版本以后,才有了 InnoDB, 两者的区别之一就是 InnoDB 支持事务。
  2. 事务就是进行一次处理的基本单元,要么完全执行,要么都不执行。

二、事务的特性(ACID)。

  1. A,也就是原子性(Atomicity)。可以理解为组成物质的基本单位,也是我们进行数据处理操作的基本单位,必须是一个整体不可分割。
  2. C,就是一致性(Consistency)。一致性指的就是数据库在进行事务操作后,会由原来的一致状态,变成另一种一致的状态。也就是说当事务提交后,或者当事务发生回滚后,数据库的完整性约束不能被破坏。
  3. I,就是隔离性(Isolation)。它指的是每个事务都是彼此独立的,不会受到其他事务的执行影响。也就是说一个事务在提交之前,对其他事务都是不可见的。
  4. D,指的是持久性(Durability)。事务提交之后对数据的修改是持久性的,即使在系统出故障的情况下,比如系统崩溃或者存储介质发生故障,数据的修改依然是有效的。因为当事务完成,数据库的日志就会被更新,这时可以通过日志,让系统恢复到最后一次成功的更新状态。(这里就涉及到了回滚日志和重做日志的相关知识了)

三、事务的使用操作。

start transaction 或者 begin  #开启事物


savepoint #在事物中创建一个保存点,方便后面可以回滚到某个点的操作


commint #事务提交,这里提交后就相当于完成了,对数据库的改动就是永久性的了。


rollback #事务回滚,执行这个就是将此次的事务中全部的操作都恢复到事物开始前的状态


rollback to [savepoint] #将事务回滚到某个保存点


release savepoint #删除某个保存点


set transaction #设置事务的隔离级别
  1. 事务有隐式事务和显式事务两种方式,数据库默认一般都是隐式事务,mysql 默认是自动提交的。

1.1. 隐式事务,每次修改数据库后不需要手动 commit 命令,就直接修改 数据库并保存结果,比如一般的增删改操作;

1.2. 显示事务,需要在操作完最后一步,手动 commit 命令提交事务。

  1. 开启 / 关闭自动提交
set autocommit =0;  //关闭自动提交

set autocommit =1; //开启自动提交
特别的参数completion_type,设置 set @@completion_type = 1 //0 1 2
CREATE TABLE test(name varchar(255), PRIMARY KEY (name)) ENGINE=InnoDB;
SET @@completion_type = 1;
BEGIN;
INSERT INTO test SELECT 盖伦;
COMMIT;
INSERT INTO test SELECT 卢锡安;
INSERT INTO test SELECT 卢锡安;
ROLLBACK;
SELECT * FROM test;

3.1. completion = 0 默认,当我们 commit 提交数据后,在下次执行 sql 的时候还需要我们再次开启事物;

3.2. completion = 1 当我们 commit 提交数据时相当于执行的是 commit and chain,会自动打开一个链式事务,即开启同级别的一个新事务;

3.3. completion = 2 也就是当我们提交后,会自动与服务器断开连接。

总结:

数据库操作的时候,可能会失败,但正是因为有事务的存在,即使在数据库操作失败的情况下,也能保证数据的一致性。同样,多个应用程序访问数据库的时候,事务可以提供隔离,保证事务之间不被干扰。最后,事务一旦提交,结果就会是永久性的,这就意味着,即使系统崩溃了,数据库也可以对数据进行恢复。

以上就是 CRMEB 分享的所有内容,如果对你有所帮助,还清多多关注我们 CRMEB

重新整理mysql基础篇—————mysql事务[三](代码片段)

前言简单整理一下事务。正文事务有四大特性:1.原子性(atomicity)一个事务必须被视为一个不可分割的最小单元。2.一致性(consistency)数据库总是从一个一致性的状态转换到另一个一致性的状态。很多人对事务的一致性和原子性可能... 查看详情

事物再次深刻理解

##msyql事务1.mysql:传统理解mysql中的一次操作过程(sql执行)是一次事务。2.mysql:那么多个线程同时操作mysql中的数据(同一条数据,一个范围内数据)就叫并发事务。3.mysql:数据库层面使用不同的事务隔离级别来进行并发事务的控制... 查看详情

mysql索引&事务

写在前面前面我们都是学习MySQL的操作,很少涉及到理论,有些sql语法前面我都没有谈,主要是工作中不常用,一般就是增删查改.要是实际工作中遇到了可以自己稍微查一下,都是很简单的.今天我们谈一下MySQL中被面试官常问的两个部... 查看详情

如何简单理解springaop和事务

...成:工具箱,工人,为工人分配工具    tx事务:由四部分组成:管理者,制度,工人,向工人通知管理制度    为什么这样理解呢?个人觉得好记:  & 查看详情

[转帖]深入理解mysql—锁事务与并发控制(代码片段)

深入理解MySQL—锁、事务与并发控制 http://www.itpub.net/2019/04/28/1723/跟oracle也类似其实所有的数据库都有相同的机制..学习了机制才能够更好的工作,. 数据和云 2019-04-2810:45:07 本文共11796个字,预计阅读需要30分钟。... 查看详情

理解mysql数据库不可缺少的知识(索引,事务存储引擎)!(代码片段)

...性索引主键索引组合索引全文索引查看索引删除索引二、事务事务的ACID特点数据不一致产生的结果MySQL事务隔离级别事务控制语句三、MySQL存储引擎MyISAM特点MyISAM的三种存储格式MyISAM适用的场景InnoDBInnoDB特点查看存储引擎查看系... 查看详情

mysql事务基础知识

前言学习/导流:小林coding-事务篇学习意义理解MySQL如何去处理并发问题,借鉴其思想存储作为应用的关键能力,而事务作为关系型数据库的关键概念,掌握很必要,也为分布式事务学习做奠基相关说明该篇博... 查看详情

mysql事务的实现原理(代码片段)

《深入理解分布式事务》第二章MySQL事务的实现原理文章目录《深入理解分布式事务》第二章MySQL事务的实现原理一、RedoLog1.RedoLog基本概念2.RedoLog基本原理3.RedoLog刷盘规则4.RedoLog写入机制5.RedoLog的LSN机制6.RedoLog相关参数二、UndoLog... 查看详情

理解完这些基本上能解决面试中mysql的事务问题(代码片段)

...于:和update操作产生的undolog因为insert操作的记录,只对事务本身可见,对其他事务不可见。故该undolog可以在事务提交后直接删除,不需要进行purge操作,而Delete操作在事务中实际上 查看详情

mysql事务管理(代码片段)

文章目录CURD什么是事务为什么会出现事务事务的版本支持事务提交方式事务常见操作方式事务隔离级别理解隔离性查看与设置隔离性隔离级别读未提交【ReadUncommitted】读提交【ReadCommitted】可重复读【RepeatableRead】串行化【Serializ... 查看详情

mysql隔离级别容易理解的方法(代码片段)

...解,所涉及的几个名称的含义为:脏读:在一事务中读取到其他未提交事务的数据不可重复读:在一事务中读取到其他已提交事务的数据幻读:在一事务中读取到其他已提交事务的新增行加锁读:在一事务... 查看详情

深入理解mysql的mvcc原理(代码片段)

深入理解MySQL的MVCC原理一、MVCC定义1、并发事务可能产生的问题2、当前读和快照读二、MVCC实现、原理1、隐藏字段2、版本链3、ReadView三、手动验证MVCC的原理1、事务隔离级别为RC(读已提交隔):2、事务隔离级别为RR&#... 查看详情

深入理解mysql的mvcc原理(代码片段)

深入理解MySQL的MVCC原理一、MVCC定义1、并发事务可能产生的问题2、当前读和快照读二、MVCC实现、原理1、隐藏字段2、版本链3、ReadView三、手动验证MVCC的原理1、事务隔离级别为RC(读已提交隔):2、事务隔离级别为RR&#... 查看详情

mysql----事务transaction(代码片段)

事务初识事务事务提交方式自动提交手动提交事务操作方式及测试操作测试事务隔离级别初步理解(同时对于一致性的理解)隔离级别相关操作读未提交【ReadUncommitted】读提交【ReadCommitted】可重复读【RepeatableRead】串行化【serializab... 查看详情

技术分享|tidb对大事务的简单拆分

作者:杨涛涛资深数据库专家,专研MySQL十余年。擅长MySQL、PostgreSQL、MongoDB等开源数据库相关的备份恢复、SQL调优、监控运维、高可用架构设计等。目前任职于爱可生,为各大运营商及银行金融企业提供MySQL相关技术支持、MySQL... 查看详情

mysql高级篇——事务的隔离级别与简单应用(代码片段)

...发所存在的问题1.1脏写1.2脏读1.3不可重复读1.4幻读2.SQL中事务的隔离级别3.案例实操3.1查看与修改MySQL的隔离级别3.2读未提交-举例3.3 读已提交-举例3.4 可重复读-举例3.5 幻读-举例1.数据并发所存在的问题针对事务的隔离性和并发... 查看详情

msyql数据库简单操作及事务和索引

msyql数据库简单操作及事务和索引Msyql数据库操作:[[email protected]~]#mysql-uroot-p//进入数据库中mysql>showdatabases;//查看所有数据库mysql>usemysql;//进入mysql数据库mysql>showtables;//查看数据库中的表mysql>descuser;//查看表的结构mysq... 查看详情

谈一谈对事务的理解(代码片段)

1.事务与四大特性  面试老是谈到事务,事务的实现其实很简单,但是对事务的描述,不同的人有不同的看法,描述语言更是千变万化,这种概念性的东西,经验告诉我,不能死记硬背,应该用自己的话来理解才是上上签。 ... 查看详情