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

6.10 Mysql 事务 锁 面试题

mysql可能出现什么和并发相关问题?

  • 脏读:读到未提交事务的修改
  • 不可重复读:一个事务内两次读取不一致
  • 幻读:一个事务内两次读取记录数不一致

哪些场景不适合脏读,举个例子?

  • 银行系统
  • 库存管理系统
  • 在线订单系统

mysql的是怎么解决并发问题的?

  • 锁机制:行级锁、表级锁、页级锁等
  • 事务隔离:读未提交、读已提交、可重复读和串行化
  • MVCC:通过在数据库中保存不同版本的数据来实现不同事务之间的隔离

可重复读隔离级别下,A事务提交的数据,在B事务能看见吗?

在这里插入图片描述

Mysql 设置了可重读隔离级后,怎么保证不发生幻读?

尽量在开启事务之后,马上执行 select … for update 这类锁定读的语句,因为它会对记录加 next-key lock,从而避免其他事务插入一条新记录,就避免了幻读的问题。

串行化隔离级别是通过什么实现的?

是通过行级锁来实现的,序列化隔离级别下,普通的 select 查询是会对记录加 S 型的 next-key 锁,其他事务就没没办法对这些已经加锁的记录进行增删改操作了,从而避免了脏读、不可重复读和幻读现象。

MVCC实现原理

对于「读提交」和「可重复读」隔离级别的事务来说,它们是通过 Read View 来实现的,它们的区别在于创建 Read View 的时机不同。
在这里插入图片描述
在这里插入图片描述

一条update是不是原子性的?为什么?

是原子性,主要通过锁+undolog 日志保证原子性的
执行 update 的时候,会加行级别锁,保证了一个事务更新一条记录的时候,不会被其他事务干扰。
执行 update 的时候,会加行级别锁,保证了一个事务更新一条记录的时候,不会被其他事务干扰。

滥用事务,或者一个事务里有特别多sql的弊端?

  • sql太多,锁定的数据多容易造成大量的死锁和锁超时
  • 回滚会占用大量存储空间,事务回滚时间长
  • 执行时间长,容易造成主从延迟。主库执行完事务才会写入binlog

讲一下mysql里有哪些锁?

在这里插入图片描述

  • 全局锁:全库逻辑备份
  • 表级锁:元数据锁:对一张表进行 CRUD 操作时,加的是 MDL 读锁;对一张表做结构变更操作的时候,加的是 MDL 写锁;MDL 是为了保证当用户对表执行 CRUD 操作时,防止其他线程对这个表结构做了变更。
  • 意向锁:为了快速判断表里是否有记录被加锁。

数据库的表锁和行锁有什么作用?

  • 表锁:整体控制、适用于大批量操作
  • 行锁:细粒度控制提高并发性能、减少锁冲突、适用于频繁单行操作

MySQL两个线程的update语句同时处理一条数据,会不会有阻塞?

在这里插入图片描述

两条update语句处理一张表的不同的主键范围的记录,一个<10,一个>15,会不会遇到阻塞?底层是为什么的?

在这里插入图片描述

如果2个范围不是主键或索引?还会阻塞吗?

会锁住全表

http://www.xdnf.cn/news/13235.html

相关文章:

  • 【Dv3Admin】系统视图角色管理API文件解析
  • 2025蓝奏云软件库合集分享链接汇总:极刻云搜 - 一站式获取海量资源
  • Linux下V2Ray安装配置指南
  • axios访问后台时,返回404
  • chrome插件中如何使用midscene.js
  • Leetcode 3577. Count the Number of Computer Unlocking Permutations
  • LeetCode 240 搜索二维矩阵 II
  • MySQL中的隐式主键和隐藏列
  • Go 语言接口详解
  • 架空线路图像视频监测装置
  • SkyWalking 10.2.0 SWCK 配置过程
  • 『uniapp』url拦截屏蔽 避免webview中打开淘宝店铺自动跳转淘宝
  • 腾讯开源 AniPortrait:音频驱动的逼真肖像动画生成革命
  • 【Java】Arrays.sort:DualPivotQuicksort
  • Spring AI MCP
  • AISHELL-5 全球首套智能驾舱中文语音交互数据集开源
  • 探秘鸿蒙 HarmonyOS NEXT:鸿蒙定时器,简单倒计时的场景应用
  • HAProxy 高可用部署方案详解
  • Blogx项目配置文件读取流程详解
  • echarts开发 | 数据可视化 -- 第一篇 echart配置项学习
  • 第13篇:数据库中间件缓存策略设计与热点数据优化实践
  • 华为云AI开发平台ModelArts
  • [小白]java之复杂JSON解析【超详细】
  • React19源码系列之合成事件机制
  • ARM内存理解(一)
  • Vim 高亮命令完整学习笔记
  • 实战案例-FPGA如何实现JESD204B确定性延迟
  • AIX智能下载器,轻松获取软件图标
  • 制作一款打飞机游戏69:编辑器升级
  • git常用操作3 替换仓库和分支管理