mysql经典问题(可用于面试提问)

mysql经典问题(可用于面试提问)

1.Where 后面的列顺序是不是要符合最左原则?

Where a=1 and b=2 等价于 Where b=2 and a=1

最左原则指的是索引顺序,不是谓词顺序,以上两个条件都匹配(a,b) 复合索引。

2.Join 的顺序是否指定左边为驱动表?

Inner Join场景下,在执行计划中按统计信息的预估自动选中驱动表,Left Join ,Right Join 时左右写的顺序才有显式意义。

3.业务上有随机返回的需求,能否用order by rand()

一般不建议,如果结果集非常小,勉强可用,但结果集大时由于随机数排序,会产生Sort操作甚至溢出到磁盘,有很大性能损耗,此类需求可以考虑伪随机算法。

4.Delete数据之后,为什么磁盘空间占用反而大了?

Delete数据并不能清理数据文件空间,反而会导致Undo,Binlog文件的增长,使用Optimize收缩。

5.Binlog是否一定要Row格式?

在主从场景下,Binlog使用Row格式是为了保证主从数据一致性。

单机场景下,Binlog做为增长数据备份使用,同时也包括一些语句级数据恢复的功能。

6.死锁、阻塞的区别

通常说的阻塞,主要是由于锁获取不到,产生的请求被阻塞,一般需要手动解锁(Kill或等待)。

死锁不等于阻塞,虽然死锁中阻塞是必现的,但是会自动回滚事务解锁,不用手动处理,但需要业务判断语句逻辑。

以上两种情况都是由于业务侧逻辑出现,并非内核原因。

7.做DDL时是否会锁表

所有的DDL都需要锁表,只是操作顺序和操作获取时间的问题。如下图所示,允许并发DDL是No,就证明对业务有一些阻塞。

相关推荐
星恒随风16 小时前
MySQL 从零入门(五):MySQL 内置函数详解——日期、字符串、数学函数与实战案例
linux·数据库·笔记·sql·mysql
吴名氏.18 小时前
Java转AI Agent教程(第十三周)混合检索与重排
java·数据库·人工智能·ai·ai agent
爱码少年18 小时前
Springboot下如何将CSV文件数据导入H2、Mysql数据库表
数据库·mysql·csv
2603_9696948519 小时前
【JavaWeb学习记录】MyBatis核心知识点与实战笔记:从入门到动态SQL
笔记·sql·学习·mysql·mybatis·javaweb·学习方法
可乐ea19 小时前
智能体记忆该拆成几层:笔记、记忆表示与注入上下文
服务器·数据库·笔记·ai智能体·提示词工程·上下文工程·记忆系统
阿义有问题21 小时前
MySQL 迁移达梦全流程实战:DTS 七步图解 + 对象名全大写适配(附踩坑清单)
数据库
聪明的笨猪猪21 小时前
企业知识库AI架构选型:落地导向的架构决策与组件清单
经验分享·面试·架构·embedding·数据库架构
猫猫不是喵喵.1 天前
从0到1创建一个微服务项目
java·数据库·微服务·1024程序员节
lsc_blog1 天前
听到优化风声,先准备能由自己掌控的事
数据库·分布式·中间件·职场和发展·重构
墨痕诉清风1 天前
SSRF漏洞实战记录+OSS桶命令执行+MCP漏洞
linux·服务器·数据库