mysql面试(一)

55 阅读2分钟

一、数据库设计基础

  1. 数据库三大范式是什么?

    • 第一范式‌:确保每列的原子性,不可再拆分‌1。
    • 第二范式‌:在满足第一范式的基础上,消除非主键列对主键的部分依赖‌1。
    • 第三范式‌:在满足第二范式的基础上,消除非主键列之间的传递依赖‌1。
    • 应用原则‌:优先遵循范式,但允许为性能妥协(如冗余设计)‌12。
  2. varchar与char的区别?

    • varchar为变长字符串,存储时按实际长度分配空间;char为定长字符串,固定占用指定字节,适合长度固定的字段‌26。

二、事务与并发控制

  1. 事务的ACID特性是什么?

    • 原子性‌:事务要么全部成功,要么全部失败回滚‌。
    • 一致性‌:事务执行前后数据库状态合法‌。
    • 隔离性‌:并发事务互不干扰‌。
    • 持久性‌:事务提交后数据永久存储‌。
  2. 事务隔离级别及并发问题

    • 读未提交‌:可能脏读、不可重复读、幻读‌。
    • 读提交‌:解决脏读‌。
    • 可重复读(MySQL默认) ‌:解决脏读、不可重复读,部分幻读‌。
    • 串行化‌:完全隔离,但性能最低‌。

三、SQL优化与索引

  1. 回表操作是什么?如何减少回表?

    • 定义‌:通过非主键索引查询时,需回主键索引获取完整数据‌。

    • 优化方法‌:

      • 使用覆盖索引(包含查询所需字段)‌。
      • 减少SELECT *,仅查询必要字段‌。
  2. 内连接、左连接、右连接的区别?

    • 内连接(INNER JOIN) ‌:仅返回匹配的行‌。
    • 左连接(LEFT JOIN) ‌:返回左表所有行,右表不匹配则为NULL‌。
    • 右连接(RIGHT JOIN) ‌:返回右表所有行,左表不匹配则为NULL‌。

四、存储引擎与高级特性

  1. InnoDB与MyISAM的区别?

    • 事务支持‌:InnoDB支持ACID事务,MyISAM不支持‌。
    • 锁机制‌:InnoDB支持行级锁;MyISAM仅表级锁‌。
    • 适用场景‌:InnoDB适合高并发写;MyISAM适合读多写少‌。
  2. 如何存储Emoji表情?

    • 使用utf8mb4字符集,支持4字节编码(如CHARACTER SET utf8mb4)‌。

五、运维与扩展

  1. MySQL主从复制原理?

    • 核心流程‌:主库记录binlog,从库通过IO线程拉取并写入relay log,SQL线程重放日志实现数据同步‌。
  2. 分库分表常见方案?

    • 垂直分表‌:按业务拆分字段到不同表‌6。
    • 水平分库分表‌:按规则(如哈希、范围)拆分数据到多个库/表‌。