MySQL灵魂16问,你能撑到第几问?
发布日期:2025-04-18 03:52:44 浏览次数:15 分类:精选文章

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

MySQL面试经典问题解答

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

数据库设计中,三大范式是数据库规范化理论的核心。

  • 第一范式:每个列都不能再被分解成更小的单位。
  • 第二范式:非主键列完全依赖于主键,不能部分依赖。
  • 第三范式:非主键列只能依赖于主键,不能同时依赖多个非主键列。
    遵守范式可以提高数据库的稳定性,但在实际应用中可能会因性能需求对范式进行优化。

2. MySQL有关权限的表都有哪些?

MySQL服务器使用以下权限表来控制用户访问:

  • user:记录用户帐号信息,权限为全局级别。
  • db:记录数据库和用户的访问权限。
  • table_priv:记录表级操作权限。
  • columns_priv:记录列级操作权限。
  • host:记录主机级别的访问控制。
    这些表不受GRANT和REVOKE语句的影响。

3. 事务的四大特性(ACID)是什么?

  • 原子性:事务不可分割,要么全部完成,要么全部无效。
  • 一致性:事务完成后,数据保持一致性。
  • 隔离性:并发事务之间数据独立,互不影响。
  • 持久性:提交事务后,数据改变对数据库持久,不受故障影响。

4. 如何设计索引?

索引设计原则:

  • 索引适合在WHERE子句或JOIN子句中使用的列。
  • 基数较小的列不建议索引。
  • 对长字符串列使用短索引或前缀索引以节省空间。
  • 避免过度索引,索引会增加写操作开销和维护时间。
  • 5. SQL语句分类有哪些?

    SQL语句分为:

    • 数据定义语言(DDL):如CREATE、ALTER、DROP,用于定义数据库结构。
    • 数据查询语言(DQL):如SELECT,用于查询数据。
    • 数据操纵语言(DML):如INSERT、UPDATE、DELETE,用于操作数据。
    • 数据控制语言(DCL):如GRANT、COMMIT,用于权限控制和事务管理。

    6. 分库分表的目的是什么?

    分库分表的主要目的是解决大数据量带来的性能问题:

    • 解耦数据库:将大表拆分为小表。
    • 提高并发能力:减少锁竞争。
    • 优化存储和网络:减少单点压力。
      常用中间件工具包括Nginx、Redis等。

    7. 什么是死锁?如何解决?

    死锁:两个或多个事务占用同一资源,导致相互等待。

    解决方法:

  • 约定访问顺序,减少死锁风险。
  • 在事务中锁定所有需要的资源,减少多个锁定点。
  • 使用升级锁定颗粒度或分布式锁。
  • 8. 脏读、不可重复读、幻读是什么?

    • 脏读:未提交事务更新的数据被其他事务读取。
    • 不可重复读:事务两次读取数据结果不一致,可能由新事务插入导致。
    • 幻读:事务两次查询数据行数不一致,可能由新事务插入新行导致。

    9. 视图的特点是什么?

    视图的特点:

    • 列来自不同表,逻辑上建立新关系。
    • 视图不是真实表,依赖基本表(实表)。
    • 视图删除不影响基本表,更新影响基本表。
    • 对多个基本表的视图不支持插入和删除操作。
      视图操作包括创建、查看、删除和修改。

    10. SQL的生命周期是什么?

    SQL的执行流程:

  • 应用服务器发送SQL请求。
  • 数据库解析SQL并生成执行计划。
  • 执行SQL,并将结果返回给应用服务器。
  • 关闭连接并释放资源。
  • 11. 主键选择自增ID还是UUID?

    推荐使用自增ID:

    • 在InnoDB中,主键索引作为聚簇索引,自增ID排列有序。
    • UUID插入时大小不定,导致索引碎片,性能下降。
      自增ID适合数据量较大时使用。

    12. MySQL CPU飙升到100%怎么处理?

    处理方法:

  • 使用top命令确认是否是mysqld占用。
  • 查看show processlist,分析长时间运行的SQL。
  • 优化索引、减少查询时间。
  • 限制连接数,防止突发连接导致资源耗尽。
  • 13. MySQL主从复制解决了哪些问题?

    • 高可用性:主库故障后切换从库。
    • 读写分离:从库仅读,主库仅写。
    • 备份:从库自动同步数据。
    • 数据分布:数据分散存储,降低故障风险。
    • 负载均衡:分散写操作,减轻主库压力。

    14. GTID是什么?

    全局事务ID(GTID)

    • 每个实例的唯一事务编号。
    • 由UUID和TID组成。
    • 用于复制故障恢复,简化主从复制管理。

    15. MySQL常用的备份工具有哪些?

    • 物理备份:如copyxtrabackup
    • 逻辑备份:如mysqldumpmydumper
    • 混合备份:结合逻辑和物理备份。

    16. MySQL备份计划如何制定?

    备份策略:

    • 全量备份:每天一次,备份时间选在低峰期。
    • 增量备份:每天进行,备份时间同样在低峰期。
    • 媒体类型选择:100GB以下使用mysqldump,100GB以上使用xtrabackup
    • 定期检查备份是否有效,确保恢复可用。
    上一篇:MySQL灵魂拷问:36题带你面试通关
    下一篇:Mysql源码安装过程中可能碰到的问题

    发表评论

    最新留言

    很好
    [***.229.124.182]2026年06月14日 12时02分19秒