MySQL基础面试必考10问(建议收藏)##

最近帮学弟学妹整理面试资料,发现MySQL基础问题真是"老演员"了!今天就把高频考点掰开揉碎讲明白,附带超多实用案例,看完直接拿去用!(文末有总结表格方便复习)


1. 事务的ACID特性怎么记不会忘?

(敲黑板)事务四大特性:

  • 原子性:要么全成功,要么全失败!就像网购付款,钱扣了必须发货,否则自动退回
  • 一致性:数据要合法,比如A转账给B,两人总金额必须不变
  • 隔离性:多个事务要"隔离",别互相干扰(后面讲隔离级别展开说)
  • 持久性:提交后数据必须存到硬盘,断电也不丢

举个🌰:

START TRANSACTION;
UPDATE account SET balance = balance - 500 WHERE user = 'A';
UPDATE account SET balance = balance + 500 WHERE user = 'B';
COMMIT; -- 成功执行才会生效

2. 索引为什么能加速查询?

(原理党必看)索引就像字典的目录!B+树结构三大优势:

  1. 有序存储:叶子节点形成链表,范围查询超快
  2. 三层结构:千万级数据3次IO就能查到
  3. 覆盖索引:不用回表直接取数据

但注意⚠️:

  • 不要乱建索引!更新数据时要维护索引,影响写入速度
  • 最左匹配原则:比如index(a,b,c),where b=1用不到索引!

3. MyISAM和InnoDB到底差在哪?

(存储引擎选型必考)对比表格:

MyISAMInnoDB
事务
外键
锁粒度表锁行锁
崩溃恢复容易丢数据支持事务日志恢复
适用场景读多写少高并发写入

现在都2024年了,除非特殊需求,建议无脑选InnoDB!


4. SQL优化有哪些实用技巧?

(实战经验分享)五个黄金法则:

  1. EXPLAIN大法好:先看执行计划,重点看type列(最好到ref)
  2. **避免SELECT ***:只取需要的字段,特别是text/blob类型
  3. 批量操作:INSERT INTO … VALUES (),(),() 比多次insert快10倍
  4. LIMIT分页优化:不要用LIMIT 100000,20,改用WHERE id > 100000
  5. 索引下推:MySQL5.6+支持,在存储引擎层过滤数据

举个优化案例:

-- 优化前
SELECT * FROM orders WHERE date > '2023-01-01' ORDER BY id DESC LIMIT 1000,20;

-- 优化后
SELECT * FROM orders 
WHERE id < (SELECT id FROM orders ORDER BY id DESC LIMIT 1000,1)
AND date > '2023-01-01' 
ORDER BY id DESC LIMIT 20;

5. 事务隔离级别怎么选?

四个级别对比(从低到高):

  1. 读未提交:可能读到别人未提交的数据(脏读)→ 基本不用
  2. 读已提交:解决脏读 → Oracle默认
  3. 可重复读:同一事务多次读取结果一致 → MySQL默认
  4. 串行化:完全隔离,性能差 → 金融场景用

重点掌握:

  • 幻读:可重复读级别下,通过间隙锁解决
  • MVCC机制:通过版本链实现非锁定读

(篇幅限制,剩余重点问题请看下表👇)

问题要点常见考点
6. 锁的类型共享锁、排他锁、意向锁死锁排查方法
7. 视图的作用简化查询、权限控制物化视图与普通视图区别
8. 备份与恢复mysqldump vs xtrabackup增量备份原理
9. 连接类型内连接、左连接、交叉连接USING和ON的区别
10. 性能监控slow_log、explain、show processlist索引优化建议

最后说两句

MySQL就像老朋友——你以为很熟了,每次面试总能发现新知识点!建议大家在本地装个MySQL8.0多实操,比如:

  1. 故意制造死锁看报错信息
  2. 不同隔离级别下测试各种读现象
  3. 用EXPLAIN分析自己的SQL语句

(附送小技巧)面试被问到不会的问题,可以这么说:“这个问题我之前主要关注实战应用,理论层面还需要深入,您能简单说明下吗?” —— 既诚实又能引导面试官讲解!


📢 互动时间:大家在MySQL面试中还遇到过哪些"奇葩"问题?欢迎评论区交流~(记得点赞收藏,需要的时候好找!)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值