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