首页 > 数据库 >适合初学者的[JAVA]:Mysql(3:Mysql事务)

适合初学者的[JAVA]:Mysql(3:Mysql事务)

时间:2024-09-24 15:23:42浏览次数:10  
标签:事务 JAVA log 数据 undo 初学者 Mysql 日志 redo

目录

说明

前言

事务

ACID:

并发事务的问题:

解决方案:

uddo log 和redo log的区别:

先了解数据库的页概念:

redo log:

undo log:

区别:

mvcc:


说明


本文适合刚刚学习Java的初学者,也可以当成阿岩~的随手笔记.接下来就请道友们和我一起来学习吧!

如果本文有写的不对的地方,请道友们一定要说出来,避免影响到刚刚学习Java的道友们,也让阿岩~进行更新于改进,在这里谢谢各位道友了!

前言

在使用Mysql的时候总会听到事务,但是不知道事务是什么,或者事务是干什么的?

事务

事务(ACID)是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销的请求,即这些操作同时成功,要么同时失败.

ACID:

原子性(Atomicity):事务是不可分割的最小操作单元,要么全部成功,要么全部失败.

一致性(Consistency):事务完成时,必须使所有的数据都保存一致状态

隔离性(Isolation):数据库系统提供的隔离机制,保障事务在不受外部并发操作影响的独立环境下运行

持久性(Durability):事务一旦提交或回滚,它对数据库中的数据改变就是永久的

(可根据转账案例来说:A向B转账:原子性来保证一起成功或全部失败. 一致性,当A-1000后B必须增加1000. 隔离性来保证当前转账不会受到外部环境影响. 持久性,当转账成功后是永久的)

并发事务的问题:

脏读: 一个事务读到另外一个事务还没有提交的数据

不可重复读: 一个事务先后读取同一条记录,但两次读取的数据不同,称之为不可重复读

幻读: 事务A查询数据时发现没有,就去插入数据,但B事务已经插入数据.事务A去插入数据时发现已经有了,事务A就去读取数据,但因为已经解决了事务不可重复读的问题,就导致事务A一直查到数据为空

解决方案:

对事物进行隔离

uddo log 和redo log的区别:

先了解数据库的页概念:

缓冲池(buffer pool): 主内存中的一个区域,里面可以缓存磁盘上经常操作的真实数据,在执行增删改查时,先操作缓冲池中的数据(若缓存池中没有数据,则从磁盘加载并缓存),以一定频率刷新到磁盘,从而减少磁盘IO,加快处理速度

数据页(pege):是innoDB储存引擎磁盘管理的最小单元,每个页的大小默认为16KB.页中储存的是行数据

redo log:

重做日志,记录的是事务提交时数据页的物理修改,是用来实现事务的持久性.

该日志文件由两部分组成:重做日志缓冲(redo log buffer)以及重做日志文件(redo log file),前者是在内存中,后者在磁盘中.当事务提交之后会把所有修改信息都存到该日志文件中,用于在刷新脏页到磁盘,发生错误是,进行数据恢复使用

undo log:

回滚日志,用于记录数据被修改前的信息,作用包含两个:提供回滚和MVCC(多版本并发控制).undo log和redo log记录物理日志不一样,它是逻辑日志

  1. 可以任务当删除一条记录时,undo log中会记录一条对应的insert 记录,反之依然

  2. 当修改一条记录时,它记录一条向反的修改记录.当执行rollback时,就可以从undo log中的逻辑记录读取到相应的内容并进行回滚.

    undo log可以实现事务的一致性和原执行

区别:

redo log: 记录的是数据页的物理变化,服务宕机可用来同步数据\

undo log: 记录的是逻辑日志,当事务回滚时,通过逆操作恢复原来的数据

redo log: 保证了事务的持久性,undo log保证了事务的原子性和一致性

mvcc:

指一个数据的多个版本,使得读写操作没有冲突

                                                                                                                        ------阿岩~的随手笔记

预告:

道友们让我出一篇关于Mysql基础的教程.拿我下一篇会将Mysql基础以笔记的形式记录下来

标签:事务,JAVA,log,数据,undo,初学者,Mysql,日志,redo
From: https://blog.csdn.net/2301_81085167/article/details/142479770

相关文章

  • 教你如何在Java中操作Redis
    Redis的Java客户端Redis的Java客户端很多,常用的几种:Jedis:基于Java的Redis客户端,提供了Redis命令的全面支持。Lettuce:高性能的Java客户端库,用于与Redis数据库进行交互。它支持同步、异步和反应式编程模型,提供了丰富的API来操作Redis。Lettuce与Jedis并列成......
  • JavaScript数据类型转换 布尔类型转换
    布尔类型转换布尔类型只有两个值:true和false。任何直观上为空的都被转换为false,其他的转换为true。显示转换为布尔类型时,使用Boolean(Value)函数。布尔类型转换规则类型类型转换后0false“0”true“”或者‘’true“”或者‘’即空字符串falsenullfalseundefinedfalseNaNfal......
  • Java怎么把多个对象的list的数据合并
    环境idea,java8方法1.使用addAll()方法想简单地想要合并List,直接使用List的addAll()方法是最直接的方式。List<YourType>list1=newArrayList<>();List<YourType>list2=newArrayList<>();//假设list1和list2已经有了数据List<YourType>merged......
  • java浅拷贝BeanUtils.copyProperties引发的RPC异常
    背景近期参与了一个攻坚项目,前期因为其他流程原因,测试时间已经耽搁了好几天了,本以为已经解决了卡点,后续流程应该顺顺利利的,没想到人在地铁上,bug从咚咚来~没有任何修改的服务接口,抛出异常:java.lang.ClassCastException:java.util.HashMapcannotbecasttocn.xxx.xxx.xxx.xx......
  • 《深入解析 Java 中的 ThreadLocal》
    ThreadLocal1.概述ThreadLocal被称为线程局部变量,用于在线程中保存数据。由于在ThreadLocal中保存的数据仅属于当前线程,所以该变量对其他线程而言是隔离的,也就是说该变量是当前线程独有的变量。ThreadLocal用于在同一个线程间,在不同的类和方法之间共享数据的的场景,也可以......
  • 【工具】Java Excel转图片
    【工具】JavaExcel转图片packagecom.yj.luban.modules.office.excel;importorg.apache.poi.ss.usermodel.*;importorg.apache.poi.xssf.usermodel.XSSFWorkbook;importjavax.imageio.ImageIO;importjava.awt.Color;importjava.awt.Font;importjava.awt.*;importj......
  • Java 音视频处理详解
    Java作为一种通用的编程语言,具备强大的跨平台能力和丰富的第三方库支持,使其在音视频处理领域也能大展拳脚。本文将详细介绍Java在音视频处理中的常用技术和方法,包括音视频捕获、处理、存储和播放。通过对实际代码示例的讲解,帮助读者深入理解并掌握Java音视频处理的核心内容。......
  • Java 数据库存储数组的方法
    在现代软件开发中,数组是常用的数据结构之一。然而,在关系数据库中直接存储数组并不是一个简单的任务。关系数据库通常擅长存储简单的数据类型如整数、字符串和日期等,但对于复杂的数据类型如数组、列表或对象,通常需要采用特殊的方法进行处理。本文将详细介绍几种在Java中将数组存储到......
  • java 实现AES的CBC、CFB、OFB加解密
    1.CBC(CipherBlockChaining,密码分组链接模式)概述CBC模式是一种常见的块密码工作模式,通过将每个明文块与前一个密文块进行异或操作,再进行加密,从而增强数据的安全性。工作原理初始向量(IV,InitializationVector):CBC模式需要一个随机生成的IV来确保相同明文在不同加密过......
  • 【Java】JVM基本组成
    一、JDK、JRE、JVM        JDK:全称“JavaDevelopmentKit”Java开发工具包,提供javac编译器、jheap、jconsole等监控工具;        JRE:全称“JavaRuntimeEnvironment” Java运行环境,提供classLibrary核心类库+JVM;             ......