Mysql
2021-08-19 15:15:37 14 举报
AI智能生成
Mysql
作者其他创作
大纲/内容
Mysql架构
查询sql的执行流程<br>
通信协议
Unix Socket<br>
TCP/IP协议
Named Pipes
通信方式
半双工
查询缓存
语法解析器
预处理
优化器
执行计划
执行引擎
存储引擎
MyISAM<br>
InnoDB<br>
Memory
CSV
Archive
mysql体系结构
模块详解
Connector
Management Serveices & Utilities
Connection Pool
SQL Interface
Parser
Optimizer
Cache and Buffer
Pluggable Storage Engines
架构分层
连接层
服务层
存储引擎层
更新sql的执行流程<br>
Buffer Pool<br>
Buffer Pool
Change Buffer
Adaptive Hash Index
整体流程图
课堂笔记
Mysql索引
索引是什么
定义
是一种数据结构
持久化在磁盘,用于提高查询效率
类型
普通索引
唯一索引
全文索引
索引存储模型推演
二分查找
特点:有序数组,拆半查找
问题:更新需要挪动大量数据,改变index
二叉查找树
特点:左子树所有的节点都小于父节点,右子树所有的节点都大于父节点
问题:查找耗时跟树深度有关,特殊情况斜树<br>
平衡二叉树(AVL)
特点:二叉树特点+左右子树深度差绝对值不能超过 1
问题:树深度约高,IO次数越多
多路平衡查找树(B树)
特点:分叉数(路数)永远比关键字数多 1
存储:键值、数据地址、节点引用
B+树
特点:1.关键字的数量是跟路数相等 2.根节点和枝节点中都不会存储数据,只有叶子节点才存储数据
2000 万左右的表,查询数据最多需要访问 3 次磁盘
B+树落地
MyISAM
.frm文件
.MYD文件
.MYI文件
课堂笔记图解
InnoDB
.frm文件
.ibd文件
索引
数据
课堂笔记图解
索引使用原则<br>
列的离散度
联合索引最左匹配原则
覆盖索引
索引条件下推
索引创建
在用于 where 判断 order 排序和 join 的(on)字段上创建索引
索引的个数不要过多
区分度低的字段,例如性别,不要建索引
频繁更新的值,不要作为主键或者索引
组合索引把散列性高(区分度高)的值放在前面
创建复合索引,而不是修改单列索引
过长的字段,怎么建立索引 前缀索引
为什么不建议用无序的值(例如身份证、UUID )作为索引 页分裂
事务与锁
什么是数据库事务<br>
事务定义
事务四大特性
InnoDB事务隔离级别
未提交读(Read Uncommintted)
已提交读(Read Committed)
可重复读(Repeatable Read)<br>
串行化(Serializable)<br>
实现方案
LBCC
锁
MVCC
创建版本号
删除版本号
InnoDB锁的基本类型
锁的粒度
表锁
行锁<br>
共享锁(读锁)<br>
排他锁(写锁)<br>
意向锁
行锁的原理
锁索引
锁的算法
记录锁
间隙锁
临键锁<br>
死锁
锁的释放与阻塞<br>
死锁的发生和检测<br>
查看锁信息(日志)
死锁的避免
性能优化总结
优化思路
连接-配置优化
缓存-架构优化
优化器-sql语句分析与优化<br>
存储引擎选择
0 条评论
下一页