秋招后端开发面试题 - 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
十二、算法
十三、项目
相关文章:
秋招后端开发面试题 - MySQL事务
目录 MySQL事务前言面试题什么是数据库事务为什么要有事务呢?项目中遇到的事务事务的传播机制事务的特性?事务并发存在的问题四大隔离级别四大隔离级别,都会存在哪些并发问题呢数据库是如何保证事务的隔离性的呢?如何解决加锁后的…...
C语言栈的含义与栈数据操作代码详解!
引言:在本篇博客中,我们将学到数据结构——栈,讲到栈的含义与关于栈的数据操作代码。栈可以在顺序表、双向链表以及单链表的基础上实现,而于本篇博客中,我们选择在顺序表的基础上实现栈。 更多有关C语言和数据结构知识…...
数据库基础语法二
一、数据库 1、登陆数据库 2、创建数据库zoo 3、修改数据库zoo字符集为gbk 4、选择当前数据库为zoo 5、查看创建数据库zoo信息 6、删除数据库zoo mysql -uroot -p #登陆数据库 create database zoo; #创建数据库zoo alter database zoo character set gbk collate gbk_…...
数据库的一些知识点
在Sno between列上创建约束,要求Sno的值在18至22岁之间,约束名Sno_CK。请写出对应的完整性命名子句constraint Sno_CK primary key check and。 本题得分: 0分 正确答案: 填空1 : 学号填空2 : snobetween18and22 2.单选题 (12分) 下述SQL命令的短语中…...
[AutoSar]BSW_Com021单帧 首帧 流控帧 连续帧 详解
目录 关键词平台说明一、N_PDU和N_PCI二、单帧三、首帧四、流控帧五、连续帧六、case 关键词 嵌入式、C语言、autosar、OS、BSW、UDS、diagnostic 平台说明 项目ValueOSautosar OSautosar厂商vector , EB芯片厂商TI 英飞凌编程语言C,C编译器HighTec (…...
CSS学习笔记之中级教程(一)
1、CSS 布局 - display 属性 1.1 display 属性 display 属性是用于控制布局的最重要的 CSS 属性。 display 属性规定是否/如何显示元素。 每个 HTML 元素都有一个默认的 display 值,具体取决于它的元素类型。大多数元素的默认 display 值为 block 或 inline。 …...
Spring Cloud Alibaba 网关 Gateway 集成(7)
项目的源码地址 Spring Cloud Alibaba 工程搭建(1) Spring Cloud Alibaba 工程搭建连接数据库(2) Spring Cloud Alibaba 集成 nacos 以及整合 Ribbon 与 Feign 实现负载调用(3) Spring Cloud Alibaba Ribbo…...
低代码技术赋能未来乡村建设:创新与实践
引言 随着我国新型城镇化进程的推进,乡村建设正面临着前所未有的挑战。如何在有限的人力、物力、财力资源下,高效推动乡村建设,实现城乡一体化发展,成为当下亟待解决的问题。低代码技术作为一种创新性的解决方案,为未来…...
基于Springboot的房屋租赁管理系统(有报告)。Javaee项目,springboot项目。
演示视频: 基于Springboot的房屋租赁管理系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构…...
跨平台移动应用开发指南:打造跨越iOS和Android的移动应用
跨平台移动应用开发已经成为许多开发者的首选,因为它可以节省时间、成本和精力,同时使得应用能够覆盖更广泛的用户群体。本指南将介绍跨平台移动应用开发的基本概念、流行的跨平台框架以及一些最佳实践,帮助您快速入门并打造出高质量的跨平台…...
QT+多线程编程
QT的多线程编程有两种 1、自定义类继承QThread 第一种是自定义一个类继承于QThread,重写run()方法来实现。然后当需要使用线程的时候你就新建一个自定义对象,然后调用start方法开始运行。 下面的例子是widget里面创建一个线程,然后调用sta…...
设计模式——迭代器模式(Iterator)
迭代器模式(Iterator Pattern)是一种行为设计模式,它使得我们能够顺序地访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。迭代器模式为遍历不同的聚合结构提供了一个统一的接口,使得客户端代码可以独立…...
在k8s中安装Grafana并对接Prometheus,实现k8s集群监控数据的展示
🐇明明跟你说过:个人主页 🏅个人专栏:《Grafana:让数据说话的魔术师》 🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、Grafana简介 2、Grafana的重要性与影响力 …...
【JavaScript】内置对象 - 数组对象 ③ ( 数组反转 - reverse 方法 | 数组排序 - sort 方法 | 自定义数组排序规则 )
文章目录 一、数组排序1、翻转数组元素 - reverse()2、数组元素排序 - sort() 默认从小到大排序3、数组元素排序 - sort() 自定义排序规则4、数组元素排序 - sort() 自定义降序排序简化写法 Array 数组对象参考文档 : https://developer.mozilla.org/zh-CN/docs/Web/JavaScript…...
ctfshow web入门 php反序列化 web267--web270
web267 查看源代码发现这三个页面 然后发现登录页面直接admin/admin登录成功 然后看到了 ///backdoor/shell unserialize(base64_decode($_GET[code]))EXP <?php namespace yii\rest{class IndexAction{public $checkAccess;public $id;public function __construct(){…...
智慧公厕解决什么问题?实现了什么样的价值?
公共厕所一直是城市管理的难题,常常面临着卫生条件不佳、管理不善以及使用体验差等问题。为了解决这些困扰城市的难题,智慧公厕应运而生。智慧公厕不仅应用了信息化和数字化技术,还通过全方位的智能化应用,彻底改变了传统公厕的面…...
IATF16949认证是什么?
IATF16949认证是一项国际质量管理体系的认证标准,由国际汽车行业联合会(IATF)开发,旨在提高汽车行业的质量管理水平,满足客户对汽车部件和零部件的要求。该标准是在ISO/TS 16949标准的基础上,专门为汽车行业…...
【Vue2】关于response返回数据的错误小记
关于Vue2中response返回数据的一个错误小记 如图,在这里返回的时候,后端是通过List< String >返回的,response接收到的实际上是一个Array数组,但是赋值给searchedTaskList的时候,需要在.then包括的范围里面赋值给…...
深入理解C++构造函数和析构函数
目录标题 1. 构造函数默认构造函数参数化构造函数拷贝构造函数 2. 析构函数3. 构造函数和析构函数的使用场景自动资源管理防止资源泄露深拷贝和浅拷贝 4. C的类中必定有个构造函数吗?5. 总结 C中的构造函数和析构函数是类对象生命周期管理的重要组成部分。构造函数用…...
CMakeLists.txt语法规则:数学运算 math
一. 简介 前面几篇文章学习了 CMakeLists.txt语法中的一些常用变量,常用命令,双引号的作用。条件判断语句,循环语句等等。 本文简单学习一下 CMakeLists.txt语法中数学运算 match。 二. CMakeLists.txt语法规则:数学运算 math 在…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...
微信小程序 - 手机震动
一、界面 <button type"primary" bindtap"shortVibrate">短震动</button> <button type"primary" bindtap"longVibrate">长震动</button> 二、js逻辑代码 注:文档 https://developers.weixin.qq…...
多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
使用 SymPy 进行向量和矩阵的高级操作
在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...
Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...
