基本面试

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 【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
目录
相关文章
|
11月前
|
消息中间件 NoSQL Java
面试多起来了
面试多起来了
54 0
面试多起来了
Zp
|
存储 SQL 关系型数据库
面试系列文章
面试系列文章
Zp
70 0
|
消息中间件 API
准备面试了~
金三银四,准备面试了~
面试之后,扼腕叹息。 (下)
面试之后,扼腕叹息。 (下)
109 0
|
XML 设计模式 安全
面试总结20201101
一、什么是泛型、为什么要使用以及泛型擦除
74 0
面试总结20201101
|
XML 设计模式 安全
面试总结之20201101
一、什么是泛型、为什么要使用以及泛型擦除
108 0
面试总结之20201101
|
XML 设计模式 安全
面试20201101
一、什么是泛型、为什么要使用以及泛型擦除
100 0
面试20201101
|
关系型数据库 MySQL 数据库
面试汇总1
面使用,资料从网络上搜集整理。
2223 0
|
开发工具 git 数据格式
面试被虐记
茫茫题海好像旷野,突发奇想,想要记录一下曾经面试被虐的自己,看看自己当时是怎么被花式吊打的... Python常见的几个面试题 值传递和引用传递 下面代码会输出什么: def f(x,l=[]): for i in range(x): l.
|
消息中间件 缓存 算法