面试准备

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 【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
目录
相关文章
|
5月前
|
存储 算法 Go
这么简单的问题都不会,那还面试什么!?
gozero如何自定义goctl?本文详解和实战,通过本文你将了解goctl的妙用,提高你的开发效率。介绍如何使用goctl工具实现模板定制化,并根据实际项目业务需求进行模板定制化实现。
这么简单的问题都不会,那还面试什么!?
|
存储 缓存 移动开发
【面试总结2】1
【面试总结2】
面试之后,扼腕叹息。 (上)
面试之后,扼腕叹息。 (上)
128 0
面试之后,扼腕叹息。 (上)
|
存储 安全 前端开发
面试中的那些坑[答疑 | 篇四]
面试中的那些坑[答疑 | 篇四]
面试中的那些坑[答疑 | 篇四]
|
算法 Java 测试技术
面试那些事
面试那些事
193 0
面试那些事
|
算法 前端开发 Java
如何准备好一场大厂面试
没错,我前段时间又出去面试了,看来应该不会有《6年 Java 面试经验》了,哈哈。我有个同事跟我说过:他曾经的老大告诉他们,无论是否跳槽,每年都应该出去面试一下。我个人对这个想法持支持态度,至少在我们还年轻的时候应该尽量这么做,当然我自己也做不到哈哈。
216 0
|
XML 设计模式 安全
面试总结20201101
一、什么是泛型、为什么要使用以及泛型擦除
80 0
面试总结20201101
|
XML 设计模式 安全
面试总结之20201101
一、什么是泛型、为什么要使用以及泛型擦除
119 0
面试总结之20201101
|
XML 设计模式 安全
面试20201101
一、什么是泛型、为什么要使用以及泛型擦除
106 0
面试20201101
|
设计模式 缓存 算法
大厂面试你懂了吗
每个人都有每个人的不同,每个人都会有自己不同的道路。 下面的大厂面试你又是否懂了,希望你可以了解。变得更加优秀。 主要分为以下几部分: (1)java面试题 (2)Android面试题 (3)混合开发面试题 (4)高端技术面试题 (5)非技术性问题&HR问题汇总