基本面试

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 【8月更文挑战第3天】
  • 知道MySQL的锁机制吗?
  • 了解MySQL的锁吗?

类似的问题可以综合回答,介绍MySQL的五花八门的锁。

MySQL的锁机制非常丰富,以InnoDB引擎为例。首先,从锁的范围看,可以分为行锁和表锁;其次,从排它性来看,可以分为排它锁和共享锁;还有意向锁,结合排它性,可以分为排它意向锁和共享意向锁;还有三个重要的锁概念,记录锁、间隙锁和临键锁。记录锁,是指锁住某条记录;间隙锁,是锁住两条记录之间的位置;临键锁可以看成记录锁和间隙锁的组合情况。
还有一种分类是乐观锁和悲观锁,在数据库里使用乐观锁的话,本质是应用层面上的CAS操作。

先从大方向上解释清楚锁的根本特性,而不是深入去解释各种锁。根本特性是:锁是和索引、隔离级别密切相关的

在MySQL的InnoDB的引擎里,锁和索引、隔离级别都是有密切关系的。在InnoDB引擎里面,锁是依赖于索引来实现的。或者说,锁都是加在索引项上的,如果一个查询用到了索引,就会用行锁;如果没用到任何索引,就会用表锁,此外,在MySQL里面,间隙锁和临键锁都是只工作在可重复读这个隔离级别下的。

后续的追问:

  • 某一种锁的具体含义
  • 某一种锁的适用场景,注意意向锁
  • 怎么在数据库使用乐观锁,或者用乐观锁解决过什么问题
  • 有没有优化过锁,或是解决过死锁
  • 详细介绍记录锁、间隙锁和临键锁,也有可能问MySQL在可重复读的隔离级别下会不会有幻读问题?(在MySQL的可重复读隔离级别下,不会出现幻读问题。这是因为MySQL使用了临键锁来解决幻读问题,保证在可重复读隔离级别下事务执行过程中不会出现插入新数据导致的幻读情况。)

还是需要一些实际的锁优化案例来证明能力

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
存储 缓存 移动开发
【面试总结2】1
【面试总结2】
|
6月前
|
Java 程序员
【面试问题】happens-before 是什么?
【1月更文挑战第27天】【面试问题】happens-before 是什么?
|
6月前
|
安全 Java 编译器
面试总结
面试总结
|
消息中间件 NoSQL Java
面试多起来了
面试多起来了
61 0
面试多起来了
|
消息中间件 算法 前端开发
如何搞砸一场面试?
如何搞砸一场面试?
62 0
|
缓存 JavaScript 网络协议
面试(3)
面试(3)
|
前端开发 安全 搜索推荐
【面试总结2】2
【面试总结2】
|
存储 C++ 索引
C++面试问题准备
C++面试问题准备
238 0
|
移动开发 JavaScript 前端开发
2022面试不完全指南
2022面试不完全指南
116 0