MySQL 中的 change buffer 作用与合并时机
pren 发布于 2026-09-22
在 MySQL 的 InnoDB 存储引擎中,change buffer 是一个容易被忽视却对性能影响巨大的内部机制。很多面试官喜欢问:“什么是 change buffer?它解决了什么问题?什么时候会触发 merge?”如果你只回答“它是缓冲非唯一二级索引的写入”,可能只能拿到...
阅读(30)评论(0)赞 (0)
pren 发布于 2026-09-22
在 MySQL 的 InnoDB 存储引擎中,change buffer 是一个容易被忽视却对性能影响巨大的内部机制。很多面试官喜欢问:“什么是 change buffer?它解决了什么问题?什么时候会触发 merge?”如果你只回答“它是缓冲非唯一二级索引的写入”,可能只能拿到...
阅读(30)评论(0)赞 (0)
pren 发布于 2026-09-22
在 MySQL 的面试中,索引相关问题几乎从未缺席,而“索引基数”和“选择性”这两个概念,往往是区分初级和高级开发者的分水岭。很多人能背出“索引可以加快查询”,但当被问到“为什么这个索引没被用上”或者“为什么索引区分度低反而更慢”时,就说不清楚了。本文从面试实战角度出发,把这几个...
阅读(21)评论(0)赞 (0)
pren 发布于 2026-09-22
当单表数据量逼近千万级、单库连接数频繁触顶时,分库分表就不再是“要不要做”的问题,而是“怎么做、用什么做”的问题。面试中,这个话题几乎是大厂后端岗位的必考题,考察点从方案选型一直延伸到分布式事务与扩容。本文从面试视角梳理常见方案,并给出 ShardingSphere 的实战思路。...
阅读(24)评论(0)赞 (0)
pren 发布于 2026-09-22
在 MySQL 面试中,COUNT()、COUNT(1) 和 COUNT(字段) 的性能差异是一个高频考点。很多开发者对此存在误解,比如认为 COUNT(1) 比 COUNT() 快,或者 COUNT() 会全表扫描导致性能最差。事实究竟如何?本文将从底层原理、执行计划和实践建议...
阅读(23)评论(0)赞 (0)
pren 发布于 2026-09-22
在 MySQL 面试中,死锁是一个高频且容易拉开差距的考点。很多候选人对死锁的理解停留在“两个事务互相等待对方持有的锁”这一层面,但面试官往往希望听到更系统的回答:死锁产生的四个必要条件是什么?InnoDB 在死锁发生时做了什么?如何通过日志和命令定位死锁?以及在业务设计中如何从...
阅读(24)评论(0)赞 (0)
pren 发布于 2026-09-22
在 MySQL 的众多组件中,InnoDB 存储引擎的 Buffer Pool(缓冲池)无疑是最核心的内存结构之一。它直接决定了数据库的读写性能,也是面试中高频出现的考点。很多候选人能说出“Buffer Pool 缓存数据和索引”,但一旦追问“它如何工作”“命中率怎么算”“如何优...
阅读(21)评论(0)赞 (0)
pren 发布于 2026-09-22
在 MySQL 的 InnoDB 存储引擎中,数据页的写入安全是一个核心问题。如果数据库在写入数据页的过程中发生崩溃,可能会导致数据页损坏(partial page write),进而造成数据丢失。为了解决这个问题,InnoDB 引入了 double write buffer(双...
阅读(31)评论(0)赞 (0)
pren 发布于 2026-09-22
在 MySQL 的面试中,有一个问题几乎成了区分候选人水平的分水岭:“可重复读隔离级别下,幻读被完全解决了吗?” 很多人的第一反应是“解决了”,因为教科书上白纸黑字写着:可重复读(RR)隔离级别通过 MVCC 和间隙锁解决了幻读。但如果你真的这么回答,面试官往往会追问一句:“你确...
阅读(28)评论(0)赞 (0)
pren 发布于 2026-09-22
在 MySQL 的日常使用和面试中,排序是一个绕不开的核心话题。无论是 ORDER BY 还是 GROUP BY,都可能触发排序操作。而 MySQL 处理排序的方式主要分为两种:索引排序和 filesort。理解它们的原理和性能差异,不仅能帮助你在面试中脱颖而出,更能指导你写出真...
阅读(25)评论(0)赞 (0)
pren 发布于 2026-09-22
在 MySQL 的面试中,存储引擎的选择几乎是必问的题目。而 InnoDB 与 MyISAM 作为最常被拿来对比的两个引擎,它们之间的差异不仅体现在“支不支持事务”这一句话上,更涉及锁机制、索引结构、并发性能、崩溃恢复等多个层面。如果你只是回答“InnoDB 支持事务,MyISA...
阅读(27)评论(0)赞 (0)