当前位置: 首页 > news >正文

数据库之MySQL——事务(一)

1、MySQL之事务的四大特性(ACID)?

原子性(atomicity):一个事务必须视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作,这就是事务的原子性。

一致性(consistency):数据库总是从一个一致性的状态转换到另一个一致性的状态。

  • 转账前后,账户总金额应保持不变(A + B 的总和不变)。

隔离性(isolation):一个事务所做的修改在最终提交以前,对其他事务是不可见的。

持久性(durability):一旦事务提交,则其所做的修改就会永久保存到数据库中。此时即使系统崩溃,修改的数据也不会丢失。

2、并发事务会出现什么问题?

脏读:脏读指的是读到了其他事务未提交的数据,未提交意味着这些数据可能会回滚,也就是可能最终不会存到数据库中,也就是不存在的数据。读到了并一定最终存在的数据,这就是脏读。例如,事务A修改数据未提交,事务B读取后若事务A回滚,事务B的数据将不一致。

不可重复读:对比可重复读,不可重复读指的是在同一事务内,不同的时刻读到的同一批数据可能是不一样的,可能会受到其他事务的影响,例如,事务A第一次读取数据后,事务B修改并提交了该数据,事务A再次读取时发现值已改变。通常针对数据更新操作。

幻读:幻读是针对数据插入操作来说的。假设事务A对某些行的内容作了更改,但是还未提交,此时事务B插入了与事务A更改前的记录相同的记录行,并且在事务A提交之前先提交了,而这时,在事务A中查询,会发现好像刚刚的更改对于某些数据未起作用,让用户感觉感觉出现了幻觉,这就叫幻读。

可重复读:可重复读指的是在一个事务内,最开始读到的数据和事务结束前的任意时刻读到的同一批数据都是一致的。

3、MySQL的事务隔离级别?

读未提交(read uncommitted):指一个事务还没提交时,它做的变更就能被其他事务看到。

读提交(read committed):指一个事务提交之后,它做的变更才能被其他事务看到。

可重复读(repeatable read):指一个事务执行过程中看到的数据,一直跟这个事务启动时看到的数据是一致的,MySQL InnoDB 引擎的默认隔离级别

串行化(serializable ):会对记录加上读写锁,在多个事务对这条记录进行读写操作时,如果发生了读写冲突的时候,后访问的事务必须等前一个事务执行完成,才能继续执行。

4、在不同事务隔离级别下会发生什么现象?

读未提交:可能发生脏读、不可重复读和幻读现象;

读提交:可能发生不可重复读和幻读现象,但是不可能发生脏读现象;

可重复读:可能发生幻读现象,但是不可能脏读和不可重复读现象;

串行化:隔离级别下,脏读、不可重复读和幻读现象都不可能会发生。

http://www.lryc.cn/news/542156.html

相关文章:

  • Linux学习笔记之文件
  • LLM学习
  • Classic Control Theory | 13 Complex Poles or Zeros (第13课笔记-中文版)
  • 给小米/红米手机root(工具基本为官方工具)——KernelSU篇
  • 【MySQL】表的增删查改(CRUD)(上)
  • 测试用例的Story是什么?
  • 15.4 FAISS 向量数据库实战:构建毫秒级响应的智能销售问答系统
  • Golang笔记——Interface类型
  • 如何查看图片的原始格式
  • FreiHAND (handposeX-json 格式)数据集-release >> DataBall
  • 【Rust中级教程】2.8. API设计原则之灵活性(flexible) Pt.4:显式析构函数的问题及3种解决方案
  • LabVIEW Browser.vi 库说明
  • promise的方法有哪些?【JavaScript】
  • 基于模仿学习(IL)的端到端自动驾驶发展路径
  • 第1篇:SOLR 简介与源码环境搭建
  • Docker 搭建 Redis 数据库
  • MySQL 连表查询:原理、语法与优化
  • 实战技巧:如何快速提高网站收录的权威性?
  • vue语法v-model例子单选题和多选题
  • 计算机网络面试知识点总结
  • JVM生产环境问题定位与解决实战(二):JConsole、VisualVM到MAT的高级应用
  • c++入门-------命名空间、缺省参数、函数重载
  • Lua语言入门(自用)
  • 大数据开发平台的框架
  • X86_64位下的GS寄存器
  • #6【TIP2023】Dif-Fusion
  • 科普:“git“与“github“
  • unplugin-vue-components,unplugin-auto-import,借用ai去学习
  • 蓝桥杯 2013 省 B 翻硬币
  • 【硬件设计】DDR3、DDR4、DDR5、DDR6性能对比与硬件设计要点