面试准备

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 【8月更文挑战第2天】
  • 遇事不决临键锁:可以认为,全部都是加临键锁的,除了下面两个子句提到的例外情况
  • 右边缺省间隙锁:例如你的值只有(1,4,7)三个,但是你查询的条件是where id < 5,那么加的是间隙锁,因为7本身就不在查询范围里。
  • 等值查询记录锁:针对的是主键和唯一索引,不适用于普通索引

  • 公司出现过的死锁,包括排查过程、解决方案
  • 其他锁使用不当的场景,比如因为锁使用不当造成的一些性能问题
  • 收集至少一个使用乐观锁的场景,并看看相关的SQL是怎么写的
  • 收集使用悲观锁的场景,尝试使用乐观锁来优化

这些案例非常重要,如果自己没有亲自遇到的话,也要找同事问清楚,或是参考网上的案例来实际看看锁的应用。

类似索引,面试官可能直接写一个SQL语句,问你可能加什么锁

  • 在主键或唯一索引上使用等值查询,例如where email = 'abc@qq.com' 区分记录存在与不存在的情况 (存在是记录锁 不存在是间隙锁 未命中索引是表锁)
  • 在主键或唯一索引上使用范围查询,例如where email >= 'abc@qq.com' (临键锁 大于部分是间隙锁 等于部分是记录锁)
  • 在普通索引上使用等值查询 (临键锁)
  • 在普通索引上使用范围查询(临键锁)
  • 执行查询,但是查询不会使用任何索引(表锁)

不管怎么回答,都要强调间隙锁和临键锁是在可重复读的隔离级别下才有效果

聊到下面的话题,也可以引导到锁机制上

  • 索引:MySQL的InnoDB是借助索引来实现行锁的
  • 性能问题:锁使用不当引起的性能问题
  • 乐观锁:比如原子操作的CAS操作,聊一聊在MySQL层面上怎么利用类似CAS的操作实现乐观锁

    在 MySQL 层面上,要实现类似 CAS 操作来实现乐观锁,通常可以使用以下方式:

    1. 使用版本号或时间戳:在数据表中添加一个版本号或时间戳字段,每次更新数据时将版本号加一或更新时间戳。在进行更新操作时,需要检查更新前后的版本号或时间戳是否一致,如果一致则进行更新,否则认为数据已被其他事务修改。
    2. 使用乐观锁的存储过程:通过存储过程实现乐观锁的逻辑,可以在存储过程中进行数据检查和更新操作,以确保并发更新时的数据一致性。

    这些方法可以帮助在 MySQL 层面上实现类似 CAS 操作的乐观锁机制,从而避免并发更新时出现数据不一致的问题。

  • 语言相关的锁:比如Go的mutex

  • 死锁:公司的数据库死锁案例
相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
存储 算法 Go
这么简单的问题都不会,那还面试什么!?
gozero如何自定义goctl?本文详解和实战,通过本文你将了解goctl的妙用,提高你的开发效率。介绍如何使用goctl工具实现模板定制化,并根据实际项目业务需求进行模板定制化实现。
这么简单的问题都不会,那还面试什么!?
|
存储 缓存 移动开发
【面试总结2】1
【面试总结2】
|
11月前
|
消息中间件 NoSQL Java
面试多起来了
面试多起来了
55 0
面试多起来了
|
10月前
|
消息中间件 算法 前端开发
如何搞砸一场面试?
如何搞砸一场面试?
52 0
|
存储 Java C#
C# 面试知识
C# 面试知识
89 0
|
安全
面试的那些事儿
面试的那些事儿
90 0
|
SQL 安全 前端开发
面试总结
集合,线程
95 0
Zp
|
存储 SQL 关系型数据库
面试系列文章
面试系列文章
Zp
71 0
|
存储 C++ 索引
C++面试问题准备
C++面试问题准备
231 0
面试之后,扼腕叹息。 (上)
面试之后,扼腕叹息。 (上)
122 0
面试之后,扼腕叹息。 (上)