mysql进阶之事务

肝铁侠 肝铁侠     2022-12-20     608

关键词:

首先我们要知道事务是什么:
它是数据库操作的最小工作单元,是作为单个逻辑工作单元执行的一系列操作;由一步或几步数据库操作序列组成逻辑执行单元一起向系统提交,要么全部都执行、要么都不执行;事务是一组不可再分割的操作集合。
其次我们要知道事务的四大特性
①原子性:事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做。
②一致性:事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。
③隔离性:一个事务的执行不能被其它事务干扰。即一个事务内部的操作及使用的数据对其它并发事务是隔离的,并发执行的各个事务之间不能互相干扰。
④持续性:也称永久性,指一个事务一旦提交,它对数据库中的数据的改变就是永久性的。接下来的其它操作或故障不应该对其执行结果有任何影响。
事务隔离级别
①Read-Uncommited:隔离级别值0,会导致脏读。
②Read-Committed:隔离级别值1,避免脏读,允许不可重复读和幻读。
③Repeatable-Read:隔离级别值2,MYSQL的默认隔离级别,避免脏读,不可重复读,允许幻读。大家可以试着自行查看一下。
④Serializable:隔离级别值3,串行化读,事务只能一个一个执行,避免了 脏读、不可重复读、幻读。执行效率慢,使用时慎重。
那么以上事务隔离级别中所描述的脏读、不可重复读、幻读、串行化读又是什么意思呢?
①脏读:一个事务对数据进行了增删改操作,但是并没有提交事务,那么另一个事务读取这条数据时,就可以读取到未提交事务的数据,如果第一个事务进行了事务回滚,那么第二个事务就读取到了脏数据。(注意MySql是默认的Repeatable-Read级别的事务隔离,在本地实践的话需要变更事务隔离级别才能看到效果)。
②不可重复读:一次事务发生了两次读取操作,但在两次读取操作之间,另一个事务修改了数据,这时候第一次和第二次读取的数据就会不一样。不可重复读关注的是数据更新和删除,通过行级锁可以实现可重复读的隔离级别。
③幻读:指的是当事务在读取某个范围内的数据时,另一个事务在该范围内执行了插入操作,那么就会产生幻读。通过行级锁可以解决不可重复读,但是却不可以解决幻读,要想解决幻读,就智能使用Serializable事务隔离级别来实现。(幻读通俗来讲就是,当你查询某个范围的数据且数据量为2时,另一个事务在这个范围内执行了数据量为1的新增,那么你第一次操作读取到数量为2的结果集,但是在执行下一个操作时,结果集包含了原来的2和新增的1
④串行化读:Serializable是最高的隔离级别,不仅避免了脏读、不可重复读,还避免了幻读。但是在这种事务隔离级别下,事务是串行顺序执行的,所以效率很低,一般很少使用。
注意,MySQL默认操作模式为自动提交模式
除非显示开启了一个事务,否则每一个增删改查操作都被当做一个单独的事务自动执行。可以通过设置autocommit的值改变默认的提交模式。
今天的分享就到这里吧,欢迎大家一起交流!

mysql进阶—事务

事务事务是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,所以这些操作要么同时成功,要么同时失败。事务的四大特性:原子性(Atomicity):事务是不可分割... 查看详情

mysql进阶实战2,那些年学过的事务

一、MySQL服务器逻辑架构MySQL核心部分包括查询解析、分析、优化、缓存以及内置函数,所有跨存储引擎的功能,存储过程、触发器、视图等。存储引擎负责MySQL中数据的存储和提取。服务器通过API和存储引擎进行通信。存储引擎... 查看详情

mysql进阶实战2,那些年学过的事务(代码片段)

目录一、MySQL服务器逻辑架构二、并发控制1、读写锁2、锁粒度3、表锁4、行级锁三、事务1、原子性(atomicity)2、一致性(consistency)3、隔离性(isolation)4、持久性(durability)四、隔离级别1、未提... 查看详情

redis进阶之事物&持久化(代码片段)

Reis进阶Redis事物Redis管道Redis持久化RDB持久化RDB持久化优缺点分析RBD文件修复&禁用RDB快照AOF持久化AOF优缺点&AOF重写机制AOF&RDB混合写机制Redis事物什么是事物?相信学过数据库的铁子们都知道事物是什么。在MySQL当中... 查看详情

mysql进阶mysql事务详解(代码片段)

序号系列文章5【MySQL基础】字符集与校对集详解6【MySQL基础】MySQL单表操作详解7【MySQL基础】运算符及相关函数详解8【MySQL基础】MySQL多表操作详解文章目录前言1,事务概念2,事务四大特性2.1,原子性2.2,一致性2... 查看详情

mysql进阶之存储引擎

1、概念存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方法。其基于表的,而不是基于库的,所以存储引擎也称为表类型。在建表的时候,不指定存储引擎,默认的存储引擎是InnoDB。查看建表语句:showcreatetable... 查看详情

java进阶:mysql的事务隔离级别面试题

Part1微服务架构设计概述1.1传统应用架构的问题1.2微服务架构是什么1.3微服务架构有哪些特点和挑战1.4如何搭建微服务架构Part2微服务开发框架2.1SpringBoot是什么2.2如何使用SpringBoot框架2.3SpringBoot生产级特性Part3微服务网关3.1Node.js... 查看详情

春华秋实之mysql进阶-06mysql管理(代码片段)

9MySQL管理9.1系统数据库系统自带数据库mysql>showdatabases;+--------------------+|Database|+--------------------+|information_schema||mysql||performance_schema||sys|+--------------------+各自的功能mysql:存储MySQL服务器正常运行所 查看详情

java进阶之检查型异常与非检查型异常

使用Spring难免要用到Spring的事务管理,要用事务管理又会很自然的选择声明式的事务管理,在spring的文档中说道,spring声明式事务管理默认对非检查型异常和运行时异常进行事务回滚,而对检查型异常则不进行回... 查看详情

java进阶之检查型异常与非检查型异常

使用Spring难免要用到Spring的事务管理,要用事务管理又会很自然的选择声明式的事务管理,在spring的文档中说道,spring声明式事务管理默认对非检查型异常和运行时异常进行事务回滚,而对检查型异常则不进行回... 查看详情

mysql原理篇之事务--08(代码片段)

Mysql原理篇之事务--08引言ACID事务的状态事务的语法支持事务的存储引擎自动提交隐式提交保存点小结引言上一篇文章。本文为事务原理篇,如果对事务基础概念还有不清楚的,建议看一下事务基础篇,假设我们有如下两条... 查看详情

mysql学习笔记之事务

(一)什么是事务??事务其实就是一个完整的业务逻辑,不可再分,是一个最小的工作单元。准确来说,一个事务就是批量的DML语句同时成功或者同时失败。说明:只有DML语句与事务有关系,其他语句与事务无关DML语句:insert... 查看详情

高性能mysql之事务

高性能MySQL事务:概念:事务是一组原子性的sql查询,一个独立的工作单元。事务内的语句要么全部执行成功,要么全部执行失败。银行转账是解释事务重要性的一个经典例子。比如:客户A要向客户B转账200元,需要三个步骤:1... 查看详情

mysql之数据库存储引擎及事务acid特性

1、存储引擎2、事务3、事务语法4、事务简单原理 查看详情

mysql之事务

鉴于CSDN对版权保护的不作为以及落后的运营手段,本博客将于近期关闭,并清空全部文章。原有文章将会经过再次的校对、整理,转移至本人在简书的博客空间。 查看详情

springboot进阶之事务管理及并发问题

...铺垫。目前正在出一个SpringBoot长期系列教程,从入门到进阶,篇幅会较多~「大佬可以绕过~」如果你是一路看过来的,很高兴你能够耐心看完。之前带大家学了Springboot基础部分,对基本的使用有了初步的认识,接下来的几期内容将... 查看详情

春华秋实之mysql进阶-02索引(代码片段)

2索引2.1安装linux下的mysql去官网下载mysql解压并安装压缩文件通过xftp解压并且使用rpm安装依赖[root@hadoopsoft]#tar-xvfmysql-8.0.26-1.el7.x86_64.rpm-bundle.tar-C/home/hadoop/app/[root@hadoopsoft]cd..[root@hadoophadoop]#cdapp[root@hadoop 查看详情

myrocks之事务处理

前言mysql目前支持的事务引擎有innodb,tokudb.rocksdb加入mysql阵营后,mysql支持的事务引擎增长至3个。myrocks目前支持的事务隔离级别有read-committed和repeatable-read.同innodb一样,myrocks也支持MVCC机制。可以说,myrocks提供了很好的事务支持... 查看详情