本文共 2476 字,大约阅读时间需要 8 分钟。
MySQL 面试准备指南:从基础到高级知识点全解析
在 MySQL 面试中,掌握核心知识点是成功的关键。以下是针对 MySQL 的常见面试问题及解决方案,帮助你快速提升面试准备水平。
一、三大范式及其应用
1NF(第一范式)
1NF 是关系型数据库的基本要求,要求每个属性(字段)只能有一个值,不能再分割。例如,一个字段不能同时存储多个地址信息。
2NF(第二范式)
2NF 要求每个实例或行都可以被唯一地区分,主要通过主键实现。非主属性必须依赖主键。
3NF(第三范式)
3NF要求每列都直接与主键相关,不能间接相关。例如,不能有中间表连接两个独立的实体。
注意:在实际开发中,3NF 不是硬性要求,灵活应用根据需求选择。
二、DML 与 DDL 的区别
DML(Data Manipulation Language)
- 数据操作语言,支持插入、更新、删除和查询操作。
- 主要由开发人员使用。
DDL(Data Definition Language)
- 数据定义语言,用于创建、修改和删除数据库对象。
- 更多由数据库管理员(DBA)操作。
区别:DDL 操作不会生成日志,立即生效;DML 操作会生成 binlog。
三、主键与外键的区别
主键
- 唯一标识一行数据,不能重复且不能为空。
- 每个表只能有一个主键。
外键
- 用于表与表之间建立联系,外键引用另一表的主键。
- 外键可以重复且可以为空。
- 一张表可以有多个外键。
注意:外键不强制要求其对应的主键存在。
四、drop、truncate 和 delete 的区别
用法
drop table:删除表及其数据。 truncate table:清空表数据,自增值重置。 delete from table:删除特定行数据。
属于的数据库语言
drop 和 truncate 属于 DDL。 delete 属于 DML。
执行速度
drop 最快,truncate 次之,delete 最慢。
注意:truncate 不产生日志,delete 生成 binlog。
五、MySQL 的基础架构
组件解析
- 连接器:身份验证和权限管理。
- 查询缓存:优化查询性能。
- 分析器:检查 SQL 语法。
- 优化器:选择最佳执行方案。
- 执行器:执行 SQL 语句。
- 插件式存储引擎:支持 InnoDB、MyISAM 等。
六、MyISAM 与 InnoDB 的区别
1. 锁机制
- MyISAM 只支持表级锁。
- InnoDB 支持行级锁和表级锁。
2. 事务支持
- MyISAM 不支持事务。
- InnoDB 提供强大的事务支持。
3. 外键支持
- MyISAM 不支持外键。
- InnoDB 支持外键。
4. 性能
七、自增主键的优缺点
优点
缺点
八、为什么自增主键不连续?
原因
- 自增值在 MyISAM 存储引擎中是临时保存,未持久化。
- 事务回滚和唯一键冲突导致自增值无法恢复。
九、redo log 的作用
功能
写入机制
十、binlog 的作用
功能
格式
statement:记录 SQL 原文。 row:记录具体操作数据。 mixed:根据 SQL 操作类型选择格式。
十一、redolog 和 binlog 的区别
区别点
redolog 是 InnoDB 的日志,记录具体数值。 binlog 是服务器层日志,记录操作内容。 redolog 文件固定大小循环利用。 binlog 文件支持多个文件。
十二、两阶段提交的意义
原理
- 将
redolog 写入分为两个阶段:prepare 和 commit。 - 失败时,事务自动回滚。
优势
- 保证数据一致性,即使
binlog 写入失败,也能回滚事务。
十三、undo log 的作用
功能
- 回滚事务,确保原子性。
- 记录数据修改历史,支持快照读和当前读。
十四、relaylog 的作用
功能
- 主从复制中介日志。
- slave 从节点读取 relaylog 数据进行同步。
十五、索引的使用原则
建立索引的规则
- 不为 NULL 的字段优先索引。
- 频繁查询或排序的字段索引。
- 频繁作为 WHERE 条件的字段索引。
避免索引失效
- 避免 SELECT * 查询。
- 最左前缀匹配原则。
十六、事务特性
特性总结
- 原子性:不可分割。
- 一致性:数据完整性。
- 隔离性:多用户隔离。
- 持久性:数据永久性。
十七、并发事务问题
常见问题
- 脏读:未提交事务数据被读取。
- 丢失修改:事务读取数据时被修改。
解决方法
十八、MVCC 的优势
优势
- 无锁控制,提升并发性能。
- 基于版本控制,避免幻读。
十九、锁的粒度
锁类型
- 行锁:锁定单行数据。
- 表锁:锁定整个表。
- 共享锁:读锁。
- 排他锁:写锁。
二十、查询执行过程
流程
权限校验。 查询缓存。 分析器检查语法。 优化器选择执行方案。 执行器执行 SQL。 引擎处理数据。
二一、更新语句执行过程
流程
权限校验。 记录 binlog。 更新数据并写入 redo log。 提交事务。
##二二、SQL 优化技巧
常见优化方法
- 避免全表扫描。
- 避免使用
!= 和 OR。 - 减少函数和运算。
- 正确使用索引。
二三、主从复制的实现
主库角色
- 写入 binlog 文件。
- 创建 log dump 线程通知 slave。
从库角色
二四、延迟优化方法
常用方式
- 并行复制。
- 提高机器配置。
- 分库分表策略。
- 避免长事务。
二五、长事务的弊端
问题
通过以上知识点的掌握,你就能在 MySQL 面试中游刃有余地应对各种问题。如果需要更深入的内容,可以参考相关技术文档或阿Q的其他文章。
转载地址:http://nmdfk.baihongyu.com/