博客
关于我
MySQL 精选 60 道面试题(含答案)
阅读量:795 次
发布时间:2023-02-11

本文共 1819 字,大约阅读时间需要 6 分钟。

MySQL 面试题汇总

金三银四到了,给大家整理一些数据库必知必会的面试题。这些问题涵盖了基础、索引、日志、数据恢复、主从备份等多个方面,适合正在准备数据库相关工作面试的同学。


基础相关

  • 关系型和非关系型数据库的区别?

    • 关系型数据库的优点:

      • 易于理解,采用关系模型组织数据。
      • 数据一致性高,更新开销小,支持复杂查询。
    • 非关系型数据库(NOSQL)的优点

      • 无需 SQL 层解析,读写效率高。
      • 支持多种数据类型存储,如图片、文档等。
      • 扩展性强,适合高并发场景。
  • MySQL 语句执行的步骤?

    • 客户端请求 → 连接器验证用户权限 → 查询缓存 → 分析器解析 SQL → 优化器选择执行方案 → 执行器执行 SQL → 引擎返回结果。
  • MySQL 使用索引的原因?

    • 根本原因:类似书的目录,提高查询效率。
    • 扩展:创建唯一性索引,避免排序和临时表,减少随机 IO。
  • 索引的三种常见底层数据结构?

    • 哈希表:适用于等值查询,范围查询不佳。
    • 有序数组:静态存储,范围查询性能好,但更新成本高。
    • N 叉树:性能优点好,适合数据库引擎,支持范围查询。
  • MySQL 的索引类型及其作用?

    • 主键索引(聚簇索引):叶子节点存整行数据。
    • 非主键索引(二级索引):叶子节点存主键值。
  • MyISAM 和 InnoDB 实现 B 树索引的区别?

    • InnoDB:叶子节点存数据,本身是索引文件。
    • MyISAM:叶子节点存数据地址,索引文件与数据文件分离。
  • InnoDB 为什么设计 B+ 树索引?

    • 考虑因素:优化查询性能,减少随机 IO。
    • 选择 B+ 树:避免哈希索引的范围查询问题,树结构减少随机 IO。
  • 覆盖索引和索引下推?

    • 覆盖索引:减少搜索次数,提升查询性能。
    • 索引下推:MySQL 5.6 引入的优化,减少回表次数。
  • 哪些操作会导致索引失效?

    • 模糊匹配、函数计算、隐式转换、OR 语句等。
  • 字符串加索引的优化方法?

    • 创建完整索引(空间占用大)、前缀索引(查询效率低)、倒序存储索引、创建 hash 索引。

  • 日志相关

    1. MySQL 的 change buffer 是什么?

      • 缓存未刷盘的数据更新,减少磁盘 IO 操作。
    2. MySQL 如何判断一行扫描数?

      • 基于索引的区分度估算记录数。
    3. MySQL 的 redo log 和 binlog 区别?

      • redo log:循环写日志,crash 后恢复数据。
      • binlog:追加写日志,用于主从复制。
    4. 为什么需要 redo log?

      • 确保数据一致性,crash-safe。
    5. redo log 的写入方式?

      • 内存日志缓冲 → 写入磁盘 → 参数配置(延迟写、实时写)。
    6. redo log 的执行流程?

      • 更新数据 → 记录 redo log → 事务提交 → 写入磁盘。
    7. binlog 的概念和作用?

      • 归档日志,实现主从复制和数据恢复,但非 crash-safe。
    8. 两阶段提交的作用?

      • 确保 redo log 和 binlog 一致性,防止数据丢失。
    9. MySQL 如何恢复未刷盘的数据?

      • 根据 redo log 和 binlog 的状态进行恢复。
    10. WAL 技术的优点?

      • 快速响应 SQL,防止数据丢失。

    11. 主从备份相关

      1. MySQL 主备同步的流程?

        • 建立长链接、配置备库、启动复制线程、解析 binlog。
      2. 主备延迟的原因及解决方案?

        • 性能差异、压力过大、大事务拆分。
      3. 多线程复制策略的意义?

        • 提高复制速度,减少备库延迟。
      4. MySQL 的并发链接和并发查询?

        • 并发连接:线程数影响内存使用。
        • 并发查询:CPU 核数限制,设置 innodb_thread_concurrency。
      5. 如何快速恢复误删数据?

        • 使用备份和 binlog 恢复,重点配置 binlog_row_image=full。

      6. 其他

        1. MySQL 数据恢复工具的选择?

          • mysqldump、xtrabackup、FLUSH LOGS。
        2. 如何处理大表查询不爆内存?

          • 边读边发,InnoDB 的 LRU 算法。
        3. 临时表的用法和特性?

          • session 独享,操作复杂,常用于计算逻辑。
        4. 存储引擎介绍(InnoDB、MyISAM、MEMORY)?

          • InnoDB:事务安全,默认存储引擎。
          • MyISAM:插入查询速度快,无事务。
          • MEMORY:内存存储,查询速度快。
        5. 内存表的优缺点?

          • 优点:快速访问;缺点:锁粒度问题,数据持久化问题。

        6. 如需进一步了解或补充内容,可以随时联系!

    转载地址:http://dbbfk.baihongyu.com/

    你可能感兴趣的文章
    MySQL —— 在CentOS9下安装MySQL
    查看>>
    MySQL —— 视图
    查看>>
    web项目 log4j2 指定配置文件路径
    查看>>
    mysql 不区分大小写
    查看>>
    mysql 两列互转
    查看>>
    MySQL 中开启二进制日志(Binlog)
    查看>>
    MySQL 中文问题
    查看>>
    MySQL 中日志的面试题总结
    查看>>
    mysql 中的all,5分钟了解MySQL5.7中union all用法的黑科技
    查看>>
    MySQL 中的外键检查设置:SET FOREIGN_KEY_CHECKS = 1
    查看>>
    Mysql 中的日期时间字符串查询
    查看>>
    mysql 中索引的问题
    查看>>
    MySQL 中锁的面试题总结
    查看>>
    MySQL 中随机抽样:order by rand limit 的替代方案
    查看>>
    MySQL 为什么需要两阶段提交?
    查看>>
    mysql 为某个字段的值加前缀、去掉前缀
    查看>>
    mysql 主从
    查看>>
    mysql 主从 lock_mysql 主从同步权限mysql 行锁的实现
    查看>>
    mysql 主从互备份_mysql互为主从实战设置详解及自动化备份(Centos7.2)
    查看>>
    mysql 主从关系切换
    查看>>