MySQL核心原理3(阿里P6\P7面试点)

innodb引擎特性

系统表空间:ibdata1     ibd 独立表空间,默认on

Doublewrite Buffer:物理文件 buffer   默认2M,记录脏页,顺序io能防止随机io在离散写时宕机发生的页断裂

Redolog:重做日志,事务持久性保证,能防止页断裂

undolog:事务原子性回滚的保证,逻辑日志,系统表空间物理buffer,实现多版本并发控制MVCC

bufferpool:LRU算法,最近最少使用,采用先进先出的队列设计容器是

change buffer:5.5之前是insert  buffer,减少刷脏的io操作

原子性Asql最小单元,一起成功,失败回滚rollback
一致性C数据、状态一致
隔离性I并发访问可见性
持久性D永久保存

隔离性:脏读?不可重复读?幻读?

SQL92提出的解决方案并不能完全解决这类问题,利用锁的互斥性解决。

LBCC的当前读(时效要求高),行锁机制     select

MVVC的快照读    update、delete、insert

行锁:共享锁Share locks(S锁、读锁)解决不可重复读、排他锁Exclusive locks(X锁、写锁)

释锁 commit/rollback

innodb在索引项加锁实现,主辅索引都将锁定索引项,没索引锁就表锁

innodb行锁算法:基于索引

临键锁Next-key locks锁住命中记录区间和下一个区间(左开右闭)type=range,innodb默认防止幻读
间隙锁Gap locks锁住索引检索记录不存在的区间(左开右开)合起来等同于临键锁
记录锁Record locks锁住等值匹配具体索引的索引项

MVCC :6byte数据行版本号trx_id、7byte删除版本号roll_ptr、6byte   row_id(没主键,它做聚集索引)

            快照读:事务版本号<=数据行版本号可新增修改(先删后加)、删除版本号>事务版本号或为NULL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值