MySQL面试必问的10个基础问题(附详细解析)

一、事务相关(必考!)

1. 什么是ACID特性?

(这里超级重要)ACID是事务的四大特性:

  • 原子性(Atomicity):要么全成功,要么全失败!(比如转账时A扣钱B没收到?绝对不行!)
  • 一致性(Consistency):数据必须符合所有约束(就像转账前后总金额必须一致)
  • 隔离性(Isolation):多个事务并发时要隔离(后面会详细讲隔离级别)
  • 持久性(Durability):提交后数据永久保存(断电也不怕)

2. 事务隔离级别有哪些?

(面试官最爱追问的问题)从低到高分为:

  1. 读未提交(Read Uncommitted):能读到别人没提交的数据(容易脏读)
  2. 读已提交(Read Committed):只能读到已提交数据(Oracle默认)
  3. 可重复读(Repeatable Read):同一事务多次读取结果一致(MySQL默认)
  4. 串行化(Serializable):完全隔离(性能最差)

举个栗子🌰:小明转账时,小红查余额看到中间状态就是脏读!(用读未提交会出现这种情况)

二、索引优化(重点!)

3. B+树索引为什么比B树好?

(数据结构必考题)主要三点优势:

  1. 非叶子节点只存键值,能放更多数据(减少IO次数)
  2. 叶子节点形成有序链表(范围查询超快)
  3. 所有数据都存在叶子节点(查询稳定性好)

4. 聚簇索引 vs 非聚簇索引

(很多人分不清的概念)

  • 聚簇索引:数据按索引顺序存储(比如InnoDB的主键索引)
  • 非聚簇索引:索引和数据分离(像MyISAM的索引)

划重点👉:一个表只能有一个聚簇索引!

5. 什么情况索引会失效?

(实际开发中经常踩坑)

  1. 使用!=<>操作符
  2. 对字段进行函数操作(如YEAR(create_time)=2023
  3. 类型转换(比如字符串字段传了数字)
  4. 最左前缀原则失效(复合索引没按顺序用)
  5. LIKE以通配符开头(%abc

三、锁机制(进阶必备)

6. 共享锁和排他锁区别

  • 共享锁(S锁):读锁,其他事务可以加S锁但不能加X锁
  • 排他锁(X锁):写锁,其他事务不能加任何锁

口诀:读读不冲突,读写/写写都冲突!

7. 死锁如何产生?怎么解决?

(生产环境常见问题)
产生条件

  1. 互斥访问
  2. 持有并等待
  3. 不可剥夺
  4. 循环等待

解决方案

  • 设置超时时间(innodb_lock_wait_timeout)
  • 死锁检测(innodb_deadlock_detect)
  • 保持事务短小精悍
  • 按固定顺序访问资源

四、SQL优化技巧(实战重点)

8. EXPLAIN关键字怎么看?

(调优必备技能)重点关注:

  • type:访问类型(最好到ref/eq_ref)
  • key:实际使用的索引
  • rows:预估扫描行数
  • Extra:Using filesort/Using temporary要警惕!

9. 分库分表常用方案

(高并发场景必问)

  1. 垂直拆分:按业务拆分(用户表、订单表分开)
  2. 水平拆分:按数据分片(比如用户ID取模)
  3. 时间分表:按月/年分表(适合日志类数据)

注意⚠️:分库分表后要解决分布式事务问题!

五、其他高频问题

10. varchar和char的区别?

(看似简单实则暗藏玄机)

  • char:定长,适合存储固定长度数据(如手机号)
  • varchar:变长,适合长度变化大的数据(如地址)

关键点:varchar需要1-2字节存储长度信息,char会自动补空格!

附:三范式简单版

  1. 第一范式(1NF):属性不可再分
  2. 第二范式(2NF):消除部分依赖
  3. 第三范式(3NF):消除传递依赖

(实际开发中不必严格遵循,根据业务灵活处理)

六、写在最后

建议大家在理解这些概念后,一定要动手实践!比如:

  1. 用EXPLAIN分析自己的SQL
  2. 故意制造死锁观察现象
  3. 对比不同索引的查询效率

记住:数据库知识光背理论是不够的,要结合实际问题去理解。如果遇到不确定的问题,可以直接说"这个我需要查下文档确认",诚实比瞎蒙更靠谱哦~(完)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值