MYSQL八股知识网络图
2025-08-04 11:31:54 0 举报
MYSQL八股知识网络图,方便记忆和知识关联
作者其他创作
大纲/内容
事务
无索引+RR:X锁 + 间隙锁(全表)
✔️
X
唯一索引
why?
RR
原始sql语句
区别:聚簇索引叶子结点存储数据
脏读
间隙锁
从库数🔼,降低从库压力
更新流程
数据落盘
MYSQL
主从复制
针对联合索引
同步(复制)策略
恢复时间长
全同步复制
ReadView
活跃的事务们
删除方式
binlog 写入磁盘
MVCC + 间隙锁
行数保存
RR不允许出现幻读 -> +间隙锁
隔离性
mysql默认
开启并行复制
叶子结点:存储数据,双向链表,范围查询,排序
索引失效
非唯一索引+RC:X锁(2*N)
当前事务id
%.. 模糊查询
优化大事务(拆分)
危害:磁盘存储不连续,影响查询效率;浪费磁盘空间,备份恢复慢
格式
落盘
影响
索引
行锁
关注
行锁 + 间隙锁
幻读
开始:实际对索引加「独占锁」(X锁)
数据加载到bufferPool
隐式转换
记录redolog buffer
读未提交
varchar:兼容性更好,但会产生内存碎片
update 锁分析(innodb)
无索引+RC:X锁(全表行锁)
插入:批量插入
引擎
最左匹配原则
事务恢复
B+树索引,hash索引
未提交的最小事务id
是否主键?
网络
是否二级索引?
联合索引非最左
聚簇索引,非聚簇索引
log
机器
redolog 写入磁盘(prepare)
隐藏主键
索引覆盖
Innodb如何让解决
非叶子结点:存储索引数据
意向锁
B+树
拓扑结构->星型
索引:自增
不可重复读
原因&解决手段
逐行删除
释放:事务结束时释放
持久性
联合索引,B+树叶子结点的顺序性
RC
MVCC
更新bufferPool里的数据
char 和 varchar
数据备份、复制、灾难恢复
类型
主键+RC:X锁
ACID
锁机制
快照读
优点:锁粒度小,高并发,死锁概率低缺点:需要自己处理不可重复读(乐观锁标记等)
非唯一索引+RR:索引X锁+间隙锁,主键X锁
配置
binlog格式
因为一些条件(索引等)降级成 记录锁
事务回滚
char:无需额外的内存空间存储长度
提升从库处理同步事件的能力
聚簇索引
读已提交
表锁
平衡树:效率高
机器配置🔼
查询数据只用从索引中获取
可重复读
读已提交 + statement binlog格式会出现主从不一致
半同步复制
row
原子性
页分裂 和 页合并
异步复制
索引下推
16KB
1、索引失效场景下,减少回表次数2、索引字段2失效,直接在索引层过滤
记录锁
一致性
如果自增id到达上限?—— 自定义的id:还是最大,会报冲突—— 隐式id:覆盖最大的
等待从库接收到binlog
binlog
undolog
同undolog比较确定
主从延迟
什么隔离级别?
主键+RR:X锁
回滚log的地址
RR 在更新时会加行锁 + 间隙锁
redolog 提交
唯一索引+RC:X锁(两个)
sql使用
隐式字段
redolog
删除:逻辑删除
innodb
串行化
同时很多事务,事务中读取其他记录到底要读哪个版本?
从库消费不过来
隔离级别
避免手段
表级锁,处理不同粒度并发的问题
更新前内容记录到undolog
结点大小固定:分裂合并IO操作小,磁盘预读,16kb
statement
myisam
应分配的下一个事务id
唯一索引+RR:X锁(两个)
innodb:对记录加锁的基本单位 next-key
多版本并发控制
索引优化(执行速度)
读锁 & 写锁
重建表
取决于策略(同步/异步)
基础
mix
最新修改的事务id
加锁原则:退化
0 条评论
下一页