数据库-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
up_limit_id <= trx_id < low_limit_id
如果在活跃事务列表trx_ids中能找到 id 为 trx_id 的事务
在活跃事务列表中找不到
将该可见行的值返回
XA事物
InnoDB对食物安全的支持
Redo log
组提交
双写
内存管理
缓冲池
数据库-MySQL
其他
常用命令
语句分析
set profiling=1;
show profiles;
查看引擎支持
show engines \\G;
update语句执行过程
插件式引擎
InnoDB
支持表锁-行锁完备的事务支持
核心特性
MyISAM
不支持事务表级锁仅缓冲索引文件,不缓冲数据文件
ndb
纯内存集群引擎5.1开始数据文件可以存放在磁盘中
Memory
内存存储
Archive
仅Insert Select引擎,zlab压缩
Federated
网关引擎
Maria
社区引擎,M有ISAM的后续版本,支持行锁,缓冲数据文件支持MVCC支持事务开关,可关闭事务感觉更像InnoDB的
InnoDB引擎
关键特性
写缓冲
为解决Insert时,对辅助索引的随机写性能低下的问题InnoDB 1.0.x以后改为升级为ChangeBuffer支持 Insert Delete Purge,BufferB+树结构,存储页编号 + 偏移量 + 具体数据
生效范围
辅助索引
非唯一索引
合并时机
对应辅助索引页加载到内存时
对应辅助索引页空间不足时(小于1/32)
工作线程定时合并
命令
show variables like 'innodb_change_buffer_max_size' \\g
show engine innodb status \\g
double wirte
自适应hash
InnoDB自己控制对热点数据生成hash索引范围查找无法使用hash
刷新临近页
show variables like '%neighbors'innodb_flush_neighbors 1开启刷新临近页。固态硬盘建议关闭
刷新页时检查所在区的所有脏页 一同刷新
AIO
Liunx Windows 都支持。以合并写提升磁盘效率
日志文件
查询日志
错误日志
慢日志
二进制文件
存储结构
缎-区(1M=64页)-页(16K)-行
常见的页
数据页
UNDO页
事务数据页
插入缓冲页
索引
B+树
hash
索引命中率
0 条评论
下一页
为你推荐
查看更多