秋招后端开发面试题 - MySQL事务


目录

  • MySQL事务
    • 前言
    • 面试题
      • 什么是数据库事务
      • 为什么要有事务呢?
      • 项目中遇到的事务
      • 事务的传播机制
      • 事务的特性?
      • 事务并发存在的问题
      • 四大隔离级别
      • 四大隔离级别,都会存在哪些并发问题呢
      • 数据库是如何保证事务的隔离性的呢?
      • 如何解决加锁后的性能问题的?
      • 并发事务有什么什么问题?应该如何解决?
      • MySQL 事务实现原理是什么?
      • 事务的两阶段提交协议


MySQL事务

前言

已经找到工作了,分享秋招时的笔记。祝大家都能顺利找到自己心仪的工作。


面试题

什么是数据库事务

事务,由一个有限的数据库操作序列构成,这些操作要么全部执行,要么全部不执行

为什么要有事务呢?

  • 保证数据的最终一致性

项目中遇到的事务

  • 下单减库存

事务的传播机制

事务的特性?

ACID

  • 原子性: 事务作为一个整体被执行,包含在其中的对数据库的操作要么全部都执行,要么都不执行
  • 一致性: 指在事务开始之前和事务结束以后,数据不会被破坏
  • 隔离性: 多个事务并发访问时,事务之间是相互隔离
  • 持久性: 表示事务完成提交后,该事务对数据库所作的操作更改,将持久地保存在数据库之中

事务并发存在的问题

事务并发会引起脏读、不可重复读、幻读问题。

  • 脏读:一个事务读取到了另一个未提交事务修改过的数据
  • 不可重复读:同一个事务内,前后多次读取,读取到的数据内容不一致
  • 幻读:如果一个事务先根据某些搜索条件查询出一些记录,在该事务未提交时,另一个事务写入了记录,导致两次读取到的数据内容不一致

四大隔离级别

  • 读未提交: 只限制了两个数据不能同时修改,但是修改数据的时候,即使事务未提交,可以被别的事务读取到
  • 读已提交: 当前事务只能读取到其他事务提交的数据
  • 可重复读: 限制了读取数据的时候,不可以进行修改
  • 串行化: 事务最高的隔离级别,所有事务都是进行串行化顺序执行的

四大隔离级别,都会存在哪些并发问题呢

  • 读未提交:脏读、不可重复读、幻读
  • 读已提交:不可重复读、幻读
  • 可重复读:幻读
  • 串行化:无

数据库是如何保证事务的隔离性的呢?

  • 数据库是通过加锁,来实现事务的隔离性的
  • 比如串行化隔离级别就是加锁实现的,但是频繁的加锁,导致读数据时,没办法修改,修改数据时,没办法读取,大大降低了数据库性能

如何解决加锁后的性能问题的?

使用MVCC 多版本并发控制

并发事务有什么什么问题?应该如何解决?

并发事务可能造成:脏读、不可重复读和幻读等问题 ,这些问题其实都是数据库读一致性问题,必须由数据库提供一定的事务隔离机制来解决

  • 加锁:在读取数据前,对其加锁,阻止其他事务对数据进行修改
  • 提供数据多版本并发控制(MVCC),也称为多版本数据库:不用加任何锁, 通过一定机制生成一个数据请求时间点的一致性数据快照(Snapshot), 并用这个快照来提供一定级别的一致性读取,从用户的角度来看,好像是数据库可以提供同一数据的多个版本

MySQL 事务实现原理是什么?

以 InnoDB 的事务实现为例

  • InnoDB 是通过MVCC解决不可重复读问题
  • 间隙锁解决幻读问题
  • 事务的隔离性是通过实现
  • 而事务的原子性、一致性和持久性则是通过事务日志实现

事务的两阶段提交协议

  • 开启 binlog 的情况下,为了保证 binlog 与 redo log 的一致性,MySQL 将采用事务的两阶段提交协议
  • 当 MySQL 系统发生崩溃时,事务在存储引擎内部的状态可能为准备状态和提交状态两种
  • 对于准备状态的事务,是进行提交操作还是进行回滚操作,需要参考 binlog
    • 如果事务在 binlog 中存在,那么将其提交
    • 如果不在 binlog 中存在,回滚

秋招后端开发面试题系列目录
一、Java
1.1 Java基础上
1.2 Java基础下
1.3 Java集合
1.4 JavaIO
1.5 Java多线程上
1.6Java多线程下
二、JVM
2.1 JVM底层原理
2.2 垃圾回收器
2.3 垃圾回收算法
2.4 类加载机制
2.5 运行时数据区
三、MySQL
3.1 MySQL基础
3.2 事务
3.3 索引
3.4 锁机制
3.5 MVCC
四、Redis
4.1 Redis基础
4.2 缓存原理
五、中间件
5.1 RabbitMQ
六、Spring开源框架
6.1 Spring
6.2 Spring MVC
6.3 Spring Boot
6.4 MyBatis
七、操作系统
八、计算机网络
九、设计模式
十、微服务架构
十一、Spring Cloud分布式
11.1 分布式基础
11.2 Spring Cloud
11.3 GateWay
11.4 Nacos
11.5 OpenFeign
11.6 Ribbon
十二、算法
十三、项目

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/597450.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

商标不做检索分析,直接申请通过率很低!

今天有个网友拿到驳回通知书找到普推知产老杨,让分析驳回通过率如何,他主要两个文字商标和两个图形商标,文字商标都是两个字的,两个字的商标名称基本都有相同或高近,引用了好几个高度近似,直接做驳回复审通…

设备自动化技术商务咨询

​南京纳恩自动化科技有限公司,成立于 2010年。高新技术企业、软件企业,致力于为客户提供最佳的继电保护、电力监控、智慧用电、工业自动化系统以及基于大数据、云系统的产品解决方案和服务。 自动化行业深耕多年,成就丰富的电力自动化行业经…

Ansible 自动化运维工具 - 了解和模块应用

目录 一. Ansible 的相关知识 1.1 Ansible 工具的简介 1.2 Ansible的四大组件 1.3 运维自动化工具 1.4 Ansible 和其它自动化运维工具对比 1.5 Ansible 的优缺点 二. Ansible 环境安装部署 2.1 管理端安装 ansible 2.2 配置主机清单 三. ansible 命令行模块 3.1 comm…

【Unity动画系统】动画层级(Animation Layer)讲解与使用

如何使用Unity的Animation Layer和Avater Mask把多个动画组合使用 想让玩家持枪行走,但是手里只有行走和持枪站立的动作。 Unity中最方便的解决办法就是使用动画层级animation layer以及替身蒙版avatar mask。 创建一个动画层级 Weight表示权重,0的话则…

Linux安装Python3.9环境

大家好,今天给大家分享一下在Linux系统中安装Python3环境,Linux系统中自带的Python2尽量不要删除,删除后可能会导致系统出现问题。 关于Linux常用命令,可以参考:作为测试人员的Linux常用命令 一、下载Python3安装包 …

Unity射击游戏开发教程:(11)制造敌人爆炸

增加爆炸效果 爆炸一切都变得更好!尤其是当你消灭敌人时。在这篇文章中,我将讨论如何在敌人被击中时为其添加爆炸动画。 在敌人的预制件中,您将需要创建一个新的动画。查看控制动画的动画器,默认情况下将从进入动画到敌人爆炸动画。这意味着,一旦敌人被实例化,敌人爆炸…

基于Opencv的车牌识别系统(毕业设计可用)

系统架构 图像采集:首先,通过摄像头等设备捕捉车辆图像。图像质量直接影响后续处理的准确性,因此高质量的图像采集是基础。 预处理:对获取的原始图像进行预处理,包括灰度化、降噪、对比度增强和边缘检测等。这些操作旨…

【Oracle直播课】5月19日Oracle 19c OCM认证大师课 (附课件预览)

Oracle 19c OCM认证大师培训 - 课程体系 - 云贝教育 (yunbee.net) 部分课件预览 OCM部分课件预览 Oracle Database 19c Certified Master Exam (OCM) 认证大师 25 天 / 150课时 什么是Oracle 19c OCM? Oracle Certified Master (OCM)是Oracle认证大师,…

汇编语言——比较两个字符串STRING1和STRING2所含字符是否完全相同,若相同则显示MATCH, 不相同则显示NO MATCH

CMPS 串比较指令: CMPS SRC, DST CMPSB (字节) CMPSW (字) 执行操作: ((SI)) - ((DI)) 根据比较结果置条件标志位:相等 ZF1;不等 ZF0 字节操作:(SI)←(SI)1, (DI)←(DI…

VMware虚拟网卡网络适配器出现黄色感叹号

问题发生:VMware在使用Ubuntu的过程中突然卡死,强制关闭开启后就发生了网络无法连接 找到电脑的设备管理发现VMware的适配器出现黄色感叹号 解决方法: 下载软件ccleaner 扫描问题,懒得去找就修复了所有的问题 最后发现适配器…

Ansible简介版

目录 架构 环境部署 一、Ansible安装部署 1.yum安装Ansible 2.修改主机清单文件 3.配置密钥对验证 4.ansible-doc 5.看被控主机 二、常用模块 1.Command模块 2.Shell模块 3.Cron模块 1.添加 2.删除 4.User模块 5.Group模块 1.创建组 ​编辑 ​编辑 ​编辑…

【redis】redis持久化分析

目录 持久化Redis持久化redis持久化的方式持久化策略的设置1. RDB(快照)fork(多进程)RDB配置触发RDB备份自动备份手动执行命令备份(save | bgsave)flushall命令主从同步触发动态停止RDB RDB 文件恢复验证 RDB 文件是否被加载 RDB …

c# - - - winform程序四个角添加圆角效果

winform 给窗体四个角添加圆角效果。 在窗体 Load 事件中添加如下代码: // 创建了一个圆角矩形的路径,并将其设置为控件的形状 System.Drawing.Drawing2D.GraphicsPath path new System.Drawing.Drawing2D.GraphicsPath(); int radius 30; path.AddAr…

KEIL 5.38的ARM-CM3/4 ARM汇编设计学习笔记13 - STM32的SDIO学习5 - 卡的轮询读写擦

KEIL 5.38的ARM-CM3/4 ARM汇编设计学习笔记13 - STM32的SDIO学习5 - 卡的轮询读写擦 一、前情提要二、目标三、技术方案3.1 读写擦的操作3.1.1 读卡操作3.1.2 写卡操作3.1.3 擦除操作 3.2 一些技术点3.2.1 轮询标志位的选择不唯一3.2.2 写和擦的卡状态查询3.2.3 写的速度 四、代…

跟TED演讲学英文:What moral decisions should driverless cars make by Iyad Rahwan

What moral decisions should driverless cars make? Link: https://www.ted.com/talks/iyad_rahwan_what_moral_decisions_should_driverless_cars_make Speaker: Iyad Rahwan Date: September 2016 文章目录 What moral decisions should driverless cars make?Introduct…

【笔试训练】day20

1.经此一役小红所向无敌 默认小红血量无限。直接计算出经过几轮攻击后,会出现人员伤亡。 对于对立来说他最多承受n轮光的攻击,对于光来说,他最多承受立得m轮攻击。 所以在经过min(n,m)轮回合之后,他们两个人至少死一个。活下来的…

已解决Error: Could Not Find a Version That Satisfies the Requirement XXX

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

大数据面试题(十):Hive的高频面试考点(二)

文章目录 Hive的高频面试考点 一、请说明Hive中 sort by ,order by ,cluster by ,distribute by各代表什么意思

Java多线程优化接口响应

同步查询 Override public MallOrder getById1(Long id) {long startTime System.currentTimeMillis();MallOrder mallOrder new MallOrder();mallOrder.setId(1L);mallOrder.setShopId(3L);mallOrder.setCustomerId(78L);mallOrder.setGoodsId(664L);mallOrder.setOrderTime…

java基础07(二维数组 方法)

目录 一. 二维数组 1. 声明 2. 初始化 3. 取值 赋值 4. 遍历 5. 一些细节 二. 方法 1. 方法的定义 1.1 无返回值方法 1.2 有返回值方法 2. 方法的调用 3. 动态参数 4. Overload 方法重载 一. 二维数组 二维数组的本质其实就是一维数组,只不过每个元素又是…
最新文章