MySQL知识复习1

MySQL存储引擎

最小单位一个 Page(16KB)

页头(记录页面的控制信息,共56字节),包括页的左右兄弟页面指针,页面空间使用情况等。

虚记录(最大虚记录,最小虚记录)

记录堆

自由空间链表

未分配空间

页尾

页内记录维护(顺序保证,插入策略,页内查询)

顺序保证:物理有序,逻辑有序(推荐选择,可以优化读)

一个索引树,连接每个逻辑有序的页,通过链表连接所有兄弟页。

插入策略:自由空间链表(优先),未使用空间

页内查询:遍历,二分查找(优先)

InnnoDB内存管理

预分配内存空间,数据加载单元,数据内外存交换

Buffer Pool(预分配的内存池),Page(Buffer Pool的最小单位),Free list(空闲Page组成的链表),Page hash表(维护内存Page和文件Page的映射关系),LRU(内存淘汰算法)

LRU:将热数据装在到表头,最冷的数据装在到表尾

LRU_new,LRU_old,Midpoint,做冷热数据分离。

页面装载:磁盘数据到内存,Free list中取>LRU中淘汰>Flush LRU淘汰

页面淘汰:LRU尾部淘汰,Flush LRU淘汰

页面移动:

old到new:innodb_old_blocks_time,old区存活时间大于此值有机会进入new区。

new到old:因为Midpoin指向5/8位置,

LRU_new的操作:减少大家竞争锁Lock的次数,减少移动次数(1.free_page_clock:Buffer Pool淘汰页数,2.LRU_new长度1/4)

MySQL事务基本概念

事务特性(ACID,AID必然C),并发问题,隔离级别

并发问题:脏读(督导未提交的数据),不可重复读(两次读取结果不同),幻读(select 操作得到的结果所表征的数据状态无法支撑后续的业务操作)

隔离级别:读未提交(会造成脏读),读已提交(会造成不可重复读),可重复读(会造成幻读),串行化

事务实现原理

MVCC(多版本并发控制):当前读,快照读。可见性判断(创建快照这一刻还未提交的事务,创建快照之后创建的事务,这两都可见),Read View(快照读 活跃事务列表,列表中最小事务ID,列表中最大事务ID)

undo log(回滚日志):保证事务原子性,实现数据多版本,delete undo log(用于回滚,提交即清理),update undo log(用于回滚)

redolog:记录修改,用于异常恢复,循环写文件(Write Pos写入位置,Check Point刷盘位置,Check Point>Write Pos落盘),刷盘时机innodb_flush_log_at_trx_commit

InnoDB锁类型

锁粒度(行级锁,间隙锁,表级锁)

所有当前读要加排他锁,SELECT,FOR UPDATE,UPDATE,DELETE

行级锁:作用在索引上,聚簇索引&二级索引

间隙锁:解决可重复读模式下的幻读问题,GAP锁锁住的位置是两条记录之间的GAP

表级锁:lock tables,元数据锁DML

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值