剖析MySQL InnoDB存储原理(下)

一、innodb存储引擎内存管理
1.1 概念:
buffer pool:预分配的内存池;
page:buffer pool的最小单位;
free list:空闲page组成的链表;
flush list:脏页链表;
page hash 表:维护内存page和文件page的映射关系;
这几个概念关系,如图所示:
1.2 内存的淘汰算法:lru
分为三部分:lru_new、lru_old、midpoint。如下图所描述:
1.2.1 页面装载的逻辑如图:
数据从磁盘到内存 > free list中取 > lru中淘汰 > lru flush
1.2.2 页面淘汰
lru链表中将第一个脏页刷盘并“释放”,放到free list中。
1.2.3 位置移动
innodb_old_blocks_time old区存活时间,大于此值,有机会进入new区
midpoint:指向5/8位置
为了减少移动到次数和lock,思路访问时间 + 频率,避免热数据被移除,通过如下:freed_page_clock:buffer pool淘汰页数
移动时机:
当前freed_page_clock - 上次移动到header时freed_page_clock >lru_new长度1/4
2、mysql事务管理机制原理分析
1、基本概念:
1.1 事务特性:
a(atomicity原子性):全部成功或全部失败
i(isolation隔离性):并行事务之间互不干扰
d(durability持久性):事务提交后,永久生效
c(consistency一致性):通过aid保证
1.2 并发问题:
脏读(drity read):读取到未提交的数据
不可重复读(non-repeatable read):两次读取结果不同
幻读(phantom read):select 操作得到的结果所表征的数据状态无法支撑后续的业务操作
1.3 隔离级别
read uncommitted(读取未提交内容):最低隔离级别,会读取到其他事务未提交的数据,脏读;
read committed(读取提交内容):事务过程中可以读取到其他事务已提交的数据,不可重复读;
repeatable read(可重复读):每次读取相同结果集,不管其他事务是否提交,幻读;
serializable(串行化):事务排队,隔离级别最高,性能最差;
2、事务实现原理
2.1 mvcc
read view:活跃事务列表(还未提交的事务) 列表中最小事务id(提交),列表中最大事务id(未提交);具体可见性通过如下流程图所示:
2.2 mvcc如何实现
undo log:实现数据多版本,回滚,提交即清理;
redo log:实现事务持久性,记录修改,用于异常恢复,循环写文件;
write pos:写入位置
chick point:刷盘位置
chick point -> write pos:待落盘数据
写入流程:
刷盘时机:
innodb_flush_log_at_trx_commit
3、mysql使用及调优实践分析
3.1 索引使用技巧
联合索引:优于多列独立索引
索引顺序:选择性高的在前面
覆盖索引:二级索引存储主键值更有利
索引排序:索引同时满足查询和排序
3.2 分库分表
是否分表,建议单表不超过1kw
分表方式,取模:存储均匀&访问均匀,按时间:冷热库
分库,按业务垂直分,水平查分多个库
3.3 使用建议
数据库字符集使用utf8mb4;
varchar按实际需要分配长度;
文本字段建议使用varchar;
时间字段建议使用long;
bool字段建议使用tinyint;
枚举字段建议使用tinyint;
交易金额建议使用long;
禁止使用“%”前导的查询;
禁止在索引列进行数学运算,会导致索引失效;
select * from t1 where id+1 >1121 不会使用索引
select * from t1 where id >1121 - 1 会使用索引
表必须有主键,建议使用业务主键;
单张表中索引数量不超过5个;
单个索引字段数不超过5个;
字符串索引使用前缀索引,前缀长度不超过10个字符;

台湾4少新挑战 IC设计须力拼获利有机成长
Alibaba Cluster Data 开放下载:270GB 数据揭秘你不知道的阿里巴巴数据中心
5G网络下光纤光缆质量的重要性探讨
汽车芯片的重要性及作用
电池碳性和碱性有什么区别_哪个好
剖析MySQL InnoDB存储原理(下)
塞宾Audiowow无线声卡具备主动降噪功能,实现双声道录制
为什么说MSO6重新定义了中端示波器?全新的ASIC有哪些技术亮点?
智慧油库5G+蓝牙+GPS/北斗RTK人员定位系统解决方案
国内32寸液晶面板供应过剩疑虑出现
iPhone8什么时候上市?iPhone8新专利、iPhone8功能:iphone8将搭载无线wifi充电模式,永不断电
研华A-Connect主题研讨会开播在即,模块化电脑创新标准COM-HPC引领效能变革
FPC线路板在智能手机上有什么应用
2022年我国科幻产业总营收达877.5亿元
10G GPON:瞄准商用 逐渐完善
分析师:11月iPhone手机中国出货量下降,其原因是没有5G
在仿真环境下实现TMS320C6000系列DSP的程序自引导
自动驾驶中的多感知源/单感知源提升方案
Edge浏览器的“效率模式”被认为影响Copilot性能
数据耦合器的增强隔离