数据库-MySQL
2022-05-25 18:02:20 9 举报
AI智能生成
mysql原理
作者其他创作
大纲/内容
事物
事物特性
ACID
Atomicity
原子性
原子性
Consistency
一致性
一致性
Isolation
隔离性
隔离性
Durability
持久性
持久性
隔离级别
读已提交
读未提交
可重复读
可重复读为什么不解决幻读问题?
串行化
事物特性,遇到的挑战
脏读
幻读
不可重复读
MVCC 多版本控制-解决方案
Read View
结构
low_limit_id
up_limit_id
trx_ids
creator_trx_id
隔离级别差异性
Repeatable Read
Read Committed
隐藏列
DB_TRX_ID
DB_ROLL_PTR
Undo log
可见性算法
trx_id < up_limit_id
trx_id >= low_limit_id,
up_limit_id <= trx_id < low_limit_id
如果在活跃事务列表trx_ids中能找到 id 为 trx_id 的事务
在活跃事务列表中找不到
DB_ROLL_PTR 指向的undo log中,取出最新的旧事务号, 将它赋给trx_id,
然后重新开始判断
然后重新开始判断
将该可见行的值返回
XA事物
InnoDB对食物安全的支持
Redo log
组提交
双写
内存管理
缓冲池
其他
常用命令
语句分析
set profiling=1;
show profiles;
show profile cpu,block io for query {ID};
查看引擎支持
show engines \G;
update语句执行过程
插件式引擎
InnoDB
支持表锁-行锁
完备的事务支持
完备的事务支持
核心特性
MyISAM
不支持事务
表级锁
仅缓冲索引文件,不缓冲数据文件
表级锁
仅缓冲索引文件,不缓冲数据文件
ndb
纯内存集群引擎
5.1开始数据文件可以存放在磁盘中
5.1开始数据文件可以存放在磁盘中
Memory
内存存储
Archive
仅Insert Select引擎,zlab压缩
Federated
网关引擎
Maria
社区引擎,M有ISAM的后续版本,支持行锁,缓冲数据文件
支持MVCC
支持事务开关,可关闭事务
感觉更像InnoDB的
支持MVCC
支持事务开关,可关闭事务
感觉更像InnoDB的
InnoDB引擎
关键特性
写缓冲
为解决Insert时,对辅助索引的随机写性能低下的问题
InnoDB 1.0.x以后改为升级为ChangeBuffer
支持 Insert Delete Purge,Buffer
B+树结构,存储页编号 + 偏移量 + 具体数据
InnoDB 1.0.x以后改为升级为ChangeBuffer
支持 Insert Delete Purge,Buffer
B+树结构,存储页编号 + 偏移量 + 具体数据
生效范围
辅助索引
非唯一索引
合并时机
对应辅助索引页加载到内存时
对应辅助索引页空间不足时(小于1/32)
工作线程定时合并
命令
show variables like 'innodb_change_buffer_max_size' \g
show engine innodb status \g
double wirte
自适应hash
InnoDB自己控制
对热点数据生成hash索引
范围查找无法使用hash
对热点数据生成hash索引
范围查找无法使用hash
0.00 hash searches/s, 16135.91 non-hash searches/s
刷新临近页
show variables like '%neighbors'
innodb_flush_neighbors 1开启刷新临近页。固态硬盘建议关闭
innodb_flush_neighbors 1开启刷新临近页。固态硬盘建议关闭
刷新页时检查所在区的所有脏页 一同刷新
AIO
Liunx Windows 都支持。
以合并写提升磁盘效率
以合并写提升磁盘效率
日志文件
查询日志
错误日志
慢日志
二进制文件
存储结构
缎-区(1M=64页)-页(16K)-行
常见的页
数据页
UNDO页
事务数据页
插入缓冲页
索引
B+树
hash
索引命中率
0 条评论
下一页