文章目录前言一、MySQL的目录结构1.1、认识目录文件1.2、配置文件设置windows平台下设置linux环境下设置二、MySQL的系统架构2.1、MySQL系统的逻辑架构:2.2、MySQL系统架构(包含每个部分介绍)2.3、MySQL的查询过程三、学习I/O原理以及数据库选型3.1、学习计算机硬盘原理3.2、Mysql数据库的数据结构选型为什么选择B树数据结构?B-树B+树(InnoDB与MyISAM底层使用)实践(感受索引的力量)3.3、为什么使用B+树四、MySQL索引4.1、索引的基本知识4.2、回表与索引覆盖介绍回表与索引覆盖引出聚簇索引与非聚簇索引(重要)4.3、索引的分类与创建4.3.1、聚簇索引与非聚簇索引(InnoDB与MyISAM不同的索引表)4.3.2、主键索引4.3.3、普通索引(常规索引,normal)4.3.4、唯一索引(unique)4.3.5、全文索引(fulltext,不常用)4.3.6、空间索引(spatial,不常用)4.3.7、复合索引(联合索引,重点!!!)认识与创建复合索引实例介绍复合索引的最左匹配原则(重要)最左匹配原则及优化器4.3.8、哈希索引(Hash,不常用也重要)认识与创建哈希索引使用哈希来解决BTREE索引较大的字段4.4、使用索引的问题4.4.1、索引究竟何时使用?4.4.2、索引不会包含有NULL值的列4.4.3、短索引使用4.4.4、排序(order by)的索引问题4.4.5、MySQL索引失效的几种情况explain关键字1、id字段(三种情况)2、select_type3、type字段(重要)11种访问类型说明小总结全表扫描注意事项4、table5、partitions(分区)6、possible_keys7、key(重要)8、key_len9、ref10、rows(重要)11、filtered12、Extra(重要)总结五、MySQL事务5.1、事务介绍5.2、事务的四大特征5.3、事务并发问题描述(4个)5.4、事务的特性—隔离性5.4.1、查看与设置隔离级别5.4.2、4种隔离级别5.4.3、示例演示隔离级别解决的问题解决不可重复读六、MySQL的锁机制介绍锁的概念6.1、InnoDB行锁①记录锁(Record Lock)(1)、name字段无索引(上表锁)(2)、name字段带索引(上行锁)总结②间隙锁(GAP Lock)介绍说明实际案例③临键锁(记录锁与间隙锁组合,next-key lock)总结6.2、表锁(含读、写锁)介绍表锁实际案例读锁示例写锁示例总结6.3、InnoDB的锁类型①读锁②写锁③MDL锁④意向锁总结6.4、其他角度对于锁的分类乐观锁(不加锁)悲观锁(加锁)6.5、锁等待介绍锁等待出现lock wait timeout ...6.6、死锁介绍死锁以及出现案例如何避免死锁各类锁总结6.7、MVCC6.7.1、引出与介绍MVCC6.7.2、认识当前读与快照读6.7.3、MVCC解决的问题6.7.4、MVCC实现原理(含undo log)6.7.5、read view(读视图)MySQL中的三种日志undo log(旧日志)redo log(物理日志)bin log(逻辑日志)总结参考文章前言本文是付费专栏《Java后端开发从入门到进阶》的配套文章,所属阶段与专题为「阶段二:数据库与缓存 / 2.1 MySQL」。专栏介绍:适合 Java 初学者及希望系统查漏补缺的开发者。专栏不仅讲“怎么用”,还会深入源码与底层原理,结合真实开发场景和代码案例,帮助你建立完整的 Java 技术知识体系。本文从 MySQL 目录结构、系统架构与磁盘 IO 原理切入,讲解 B+ 树索引、聚簇与非聚簇索引、索引使用规则,并梳理事务和锁的核心知识,建立数据库查询与并发控制的基础认知。本文所属付费专栏目录:Java后端开发从入门到进阶整体专栏目录汇总一、MySQL的目录结构1.1、认识目录文件手动安装mysql版整体的目录结构:b