公司动态

数据库面试核心要点与MySQL优化实战

📅 2026/8/26 3:08:48
数据库面试核心要点与MySQL优化实战
1. 数据库面试核心要点解析作为技术面试的必考领域数据库相关知识点占据了后端开发岗位考察的30%以上的比重。最近在准备腾讯技术面时我系统梳理了数据库领域的核心八股内容这些知识点不仅高频出现在大厂面试中更是实际工作中必须掌握的硬核技能。2. 数据库基础理论2.1 事务特性与隔离级别ACID特性是数据库事务的基石原子性(Atomicity)事务是不可分割的工作单位一致性(Consistency)事务执行前后数据库都处于一致状态隔离性(Isolation)并发事务间互不干扰持久性(Durability)事务提交后改变永久有效常见隔离级别及问题读未提交(Read Uncommitted)脏读、不可重复读、幻读读已提交(Read Committed)不可重复读、幻读可重复读(Repeatable Read)幻读MySQL默认级别串行化(Serializable)无并发问题但性能最低实际开发中MySQL默认使用RR级别但通过MVCC间隙锁避免了幻读问题2.2 索引原理与优化B树索引特点非叶子节点只存key不存data叶子节点包含全部数据并按key排序叶子节点间通过指针连接形成链表索引优化实践遵循最左前缀原则设计联合索引避免在索引列上使用函数或运算区分度低的字段不适合建索引控制单表索引数量建议不超过5个3. MySQL核心机制3.1 存储引擎对比特性InnoDBMyISAM事务支持支持不支持锁粒度行锁表锁外键支持不支持崩溃恢复支持不支持全文索引5.6支持支持适用场景OLTPOLAP/读多写少3.2 日志系统详解redo log重做日志InnoDB特有物理日志实现事务的持久性循环写入固定大小崩溃恢复时重放未刷盘操作undo log回滚日志逻辑日志记录数据修改前的状态实现事务回滚和MVCC不会主动删除通过purge线程清理binlog归档日志Server层实现逻辑日志主从复制和数据恢复使用三种格式STATEMENT/ROW/MIXED4. 性能优化实战4.1 慢查询分析流程开启慢查询日志SET GLOBAL slow_query_log ON; SET GLOBAL long_query_time 1;使用explain分析执行计划 重点关注typeALL(全表扫描)需优化key实际使用的索引rows预估扫描行数ExtraUsing filesort/Using temporary需警惕优化方案制定添加合适索引重写复杂SQL调整表结构使用缓存4.2 分库分表策略水平拆分原则按范围如按时间、ID区间按哈希均匀分布数据按业务不同业务分到不同库常见问题及解决方案分布式ID生成雪花算法跨库查询全局表/字段冗余分布式事务XA/TCC/SAGA数据迁移双写增量同步5. 高可用架构5.1 主从复制原理主库binlog dump线程发送日志从库I/O线程接收日志写入relay log从库SQL线程重放relay log复制模式对比异步复制性能最好但可能丢数据半同步复制至少一个从库确认全同步复制所有从库确认5.2 读写分离实现常见方案中间件MyCat/ShardingSphere驱动层MySQL Router代码层Spring AOP注意事项主从延迟问题事务路由策略故障自动切换6. 面试高频问题一条SQL的执行过程连接器建立连接分析器语法分析优化器生成执行计划执行器调用存储引擎接口返回结果InnoDB如何解决幻读MVCC多版本并发控制间隙锁(Gap Lock)Next-Key Lock记录锁间隙锁为什么用B树不用B树更矮胖的树结构减少IO范围查询效率更高非叶子节点不存data使单页能存更多key7. 实战经验分享大表加字段的正确姿势先在从库执行使用pt-online-schema-change避免业务高峰期操作监控主从延迟连接池参数调优max_connections根据QPS和平均执行时间计算wait_timeout避免连接泄漏thread_cache_size减少线程创建开销备份恢复策略全量备份binlog增量定期恢复演练多机房异地备份备份文件加密存储8. 进阶学习路线源码阅读建议从SQL解析开始重点研究优化器和执行器理解存储引擎接口性能压测工具sysbench综合基准测试tpcc-mysql事务处理测试mysqlslap查询性能测试推荐学习资料《MySQL技术内幕InnoDB存储引擎》《高性能MySQL》MySQL官方文档阿里云数据库博客