高频mysql的常见面试题及答案.docxVIP

  • 4
  • 0
  • 约8.91千字
  • 约 23页
  • 2026-06-18 发布于四川
  • 举报

高频mysql的常见面试题及答案

索引的底层数据结构为什么选择B+树而不是哈希表或B树?

哈希表通过键值对存储,查询单条记录时间复杂度为O(1),但无法高效处理范围查询(如WHEREage20),因为哈希表的键是离散的,无法快速定位范围。B树每个节点既存键值又存数据,导致树的高度较高,查询时需要多次磁盘IO。B+树所有数据都存储在叶子节点,非叶子节点仅存键值用于索引,且叶子节点通过双向链表连接,支持范围查询时只需遍历链表,同时树的高度更低(相同数据量下,B+树比B树少1-2层),减少了IO次数。此外,B+树的叶子节点集中存储数据,更有利于磁盘预读(操作系统通常按页读取,连续的叶子节点可一次读取多个数据),因此更适合作为数据库索引的底层结构。

InnoDB的行锁是如何实现的?间隙锁(GapLock)的作用是什么?

InnoDB的行锁通过给索引项加锁实现,若SQL语句未使用索引,会退化为表锁。行锁分为共享锁(S锁)和排他锁(X锁),S锁允许其他事务读但禁止写,X锁禁止其他事务读写。间隙锁是InnoDB在可重复读隔离级别下为解决幻读引入的锁机制,锁定的是索引记录之间的间隙(如索引值10和20之间的间隙),防止其他事务在该间隙插入新记录。例如,当执行SELECTFROMuserWHEREage=20FORUPDATE时,若age=20的记录不存在,InnoDB会对

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档