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