文章目录
- 前言
- 一、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_type
- 3、type字段(重要)
- 11种访问类型说明
- 小总结
- 全表扫描注意事项
- 4、table
- 5、partitions(分区)
- 6、possible_keys
- 7、key(重要)
- 8、key_len
- 9、ref
- 10、rows(重要)
- 11、filtered
- 12、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、MVCC
- 6.7.1、引出与介绍MVCC
- 6.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