MySQL八股文背诵版怎么背效率更高?

MySQL八股文背诵版核心知识点整理 一、存储引擎对比 InnoDB
  • 支持事务ACID特性,行级锁外键聚簇索引数据与索引存储在一起。
  • 适用场景:读写频繁、需事务支持的业务如电商订单。 MyISAM
    • 不支持事务表级锁非聚簇索引数据与索引分开存储。
    • 适用场景:读多写少、不需要事务的场景如日志表。 二、索引类型与原理 1. B+树索引 - 有序排列叶子节点存储数据InnoDB或指针MyISAM,支持范围查询。 - 优势:查询效率稳定, avg O(log n)。

      2. 哈希索引 - 键值对存储不支持范围查询,适合等值查询如Memory引擎。

      3. 索引失效场景 - 使用函数/表达式如 `SUBSTR(name,1,3)='abc'`。 - 隐式类型转换如字符串不加引号。 - OR条件包含非索引列。 - LIKE以%如 `name LIKE '%张三'`。

      三、事务隔离级别 1. 读未提交Read Uncommitted - 可能出现 脏读读取未提交数据。

      2. 读已提交Read Committed - 决脏读,可能出现 不可重复读同一事务多次读结果不同。

      3. 可重复读Repeatable Read - MySQL默认级别,决不可重复读,通过MVCC实现。

      4. 串行化Serializable - 最高隔离级别,表级锁,全避免并发问题,性能低。

      四、查询优化技巧
      • 避免SELECT *,只查必要字段。
      • 使用LIMIT分页,避免全表扫描。
      • JOIN表数量不超过3张,减少关联开销。
      • 避免在WHERE子句使用!=、NOT IN,可能导致索引失效。
      • 大表DDL使用工具如pt-online-schema-change,避免锁表。 五、锁机制
        • 行锁:InnoDB基于索引实现,未命中索引则升级为表锁
        • 表锁:MyISAM默认锁,读锁阻塞写,写锁阻塞读写
        • 间隙锁:InnoDB在可重复读级别下,防止幻读锁定范围区间。 覆盖MySQL高频面试题核心要点,需结合实际场景理记忆,避免死记硬背。

延伸阅读: