一、存储引擎
1. MySQL体系架构

2. 存储引擎简介

show create table 表名;
show engines;

3. 存储引擎特点
(1)innodb


(2)MyISAM

(3)Memory

(4)对比

4. 存储引擎选择

5. 总结

二、索引
1. 索引概述



2. 索引结构
(1)简介


我们平常所说的索引,如果没有特别指明,都是指B+树结构组织的索引
(2)Btree
Btree也称B-Tree(Balanced Tree):多路平衡查找树
🥗 数据结构可视化网站


(3)B+Tree



(4)Hash


(5)B+Tree的优势

相对于Btree,Btree节点上存数据的空间都用来存键值(指针),那一层就可以容纳更多的键值了
3. 索引分类



回表查询

😋 小试牛刀


4. 索引语法

5. SQL性能分析

😎 慢查询日志

show variables like 'slow_query_log';
😎 profile 详情


😎 explain 执行计划


6. 索引使用

(1)最左前缀法则

(2)索引失效情况
😜 范围查询索引失效问题

😜 索引列运算

😜 字符串不加引号

😜 模糊查询

(3)索引使原则


MySQL是否使用索引,取决于数据的比例,并非固定!!
(4)SQL提示

(5)覆盖索引




(6)前缀索引


(7)单列索引和联合索引


7. 索引设计原则

8. 总结


三、SQL优化
1. 插入数据
🌸 insert 插入

🌸 批量插入

2. 主键优化
🌸 页分裂


🌸 页合并

🌸 主键设计原则

3. order by 优化




4. group by 优化

5. limit 优化

6. count 优化

7. update 优化

8. 总结

四、视图、存储过程、触发器
1. 视图
🐷 简介


🐷 检查选项


🐷 视图的更新

🐷 视图的作用

2. 存储过程
(1)基本语法

🐷 特点
🍑 封装,复用
🍑 可以接受参数,也可以返回数据
🍑 减少网络交互,提升效率



(2)变量
🐷 系统变量


🐷 用户自定义变量


🐷 局部变量

(3)if 分支

(4)参数

(5)case 分支

(6)循环
🐷 while 循环

🐷 repeat 循环

🐷 loop 循环

(7)游标

(8)条件处理程序

3. 存储函数
特殊的存储过程【了解即可,一般用存储过程】

4. 触发器
👵 简介

👵 基础语法

5. 总结

五、锁
1. 简介
🐷 介绍

🐷 分类

2. 全局锁

👨🏫 只读不写


3. 表级锁

🐷 表锁

读锁不会阻塞其他客户端的读,但是会阻塞写。写锁既会阻塞其他客户端的读,又会阻塞其他客户端的写.
🐷 元数据锁(meta data lock,MDL)

🐷 意向锁


🐷 行级锁

🍑 行锁



🍑 间隙锁

🐷 总结

六、InnnoDB引擎
1. 逻辑存储结构


2. 架构

🍤 内存架构
✨ 缓冲区

✨ 变更缓冲区

✨ 自适应哈希

✨ 日志缓冲区

🍤 磁盘架构
✨ 表空间



🍤 后台线程

3. 事务原理
🍤 概述


🍤 redolog

🍤 undolog

4. MVCC
🍤 基本概念

🍤 隐藏字段

🍤 undolog日志


🍤 readview


🍤 原理分析
✨ RC级别(read committed:读已提交)

✨ RR(repeatable read:可重复读)

🍤 实现原理

🥞 总结

七、MySQL管理
1. 系统数据库

2. 常用工具
🍤 mysql

🍤 mysqlAdmin

🍤 mysqlbinlog

🍤 mysqlshow

🍤 mysqldump

🍤 mysqlimport / source

3. 总结

🌸 总结
