MySQL面试必备:100问解析

需积分: 23 3 下载量 102 浏览量 更新于2024-09-01 收藏 932KB PDF 举报
"MySQL面试高频100问.pdf" 在MySQL面试中,索引、事务和优化是经常被提及的关键知识点。下面将详细解释这些概念。 1. **索引** - **什么是索引?** 索引是数据库为了加速查询而创建的一种数据结构,它允许数据库系统更快地找到数据行,类似于书籍的目录。 - **索引的数据结构** 索引的具体实现依赖于存储引擎。例如,InnoDB引擎主要使用B+树作为索引结构,这使得搜索、插入和删除操作具有较高的效率。Hash索引则适用于等值查询,但不支持范围查询和排序。 2. **B+树索引** - B+树是一种平衡的多路搜索树,它的每个节点可以有多个分支,叶子节点包含所有索引项,并且所有叶子节点都在同一层,方便范围查询和全表扫描。 3. **索引类型** - 主键索引:唯一且非空的索引,用于标识表中的每一行。 - 唯一索引:不允许有重复的值,但可以包含NULL。 - 普通索引:最基础的索引,允许重复值。 - 全文索引:用于全文搜索,适用于大量文本数据。 - 聚集索引(Clustered Index):数据行的物理存储顺序与索引顺序相同。 - 非聚集索引(Non-Clustered Index):索引与数据行的物理存储位置无关,索引中存储了指向数据行的指针。 4. **索引优化** - 索引选择性:索引列中不同值的比例越高,选择性越好,更适合做索引。 - 覆盖索引:查询只需要从索引中获取,无需访问数据行,提高了查询速度。 - 使用EXPLAIN分析查询计划,理解MySQL如何使用索引。 - 注意避免在WHERE子句中使用NOT NULL、!=、<>、IN()、NOT IN()、LIKE 'value%'等操作,因为它们可能无法利用索引。 5. **事务** - **事务的概念** 事务是数据库操作的一组逻辑单元,具有原子性、一致性、隔离性和持久性的特点。 - **ACID特性** - 原子性(Atomicity):事务中的所有操作要么全部完成,要么全部不完成。 - 一致性(Consistency):事务完成后,数据库从一个一致性状态转换到另一个一致性状态。 - 隔离性(Isolation):并发事务之间是相互隔离的,看起来像是依次执行。 - 持久性(Durability):一旦事务提交,其结果就是永久的。 6. **事务隔离级别** - READ UNCOMMITTED(读未提交) - READ COMMITTED(读已提交) - REPEATABLE READ(可重复读,InnoDB默认) - SERIALIZABLE(串行化) 7. **死锁** - 当两个事务互相等待对方释放资源时,就会发生死锁。MySQL通过死锁检测机制来解决这个问题。 8. **性能优化** - 查询优化:避免全表扫描,合理使用索引,减少JOIN操作,限制返回的行数。 - 表设计优化:合理设计数据类型,避免冗余数据,使用合适的数据结构。 - 加载优化:批量插入数据,使用LOAD DATA INFILE语句。 - 使用EXPLAIN分析查询性能,调整索引策略。 以上只是MySQL面试中可能出现的部分问题及答案概览,真正掌握这些知识需要深入理解和实践。