绝对干货 excel中一对多查找问题解决思路汇总 附公式模型
801
2022-05-28
InnoDB 架构
下图是官方文档给出的InnoDB存储结构
InnoDB的日志先行策略,按照内存到磁盘的顺序对数据进行处理。
其中的优点有以下几点
内存中操作完成就可以返回成功,执行效率高
就算是数据落回磁盘过程中断电也能通过redo日志找回
InnoDB的缓存池通过页链表实现,效率高
InnoDB的磁盘中的存储有以下特点,我做了简化直接突出重点,方便大家记忆
InnoDB表的限制:一个表的辅助索引最多64个,一行大小最多65535,组合索引最多16个字段
表空间
系统表空间
File-Per-Table 表空间
Undo表空间
临时表空间
索引
InnoDB中通过索引组织表存放索引。
InnoDB中主键索引使用的是B+索引
B+树的特点
每个非叶子节点只存储键值,不存储数据
一般的高度为2-4层,所以查找速度很快
辅助索引有被称为非聚集索引,辅助索引存储的是主键的值,当拿到主键的值之后再去查找数据的过程被称为回表。
如果人家问你回表,可以按照回表-辅助索引-索引的逻辑解释。
覆盖索引指的是辅助索引能找到要找的列,而不需要回表。
联合索引的顺序很重要,所以我们在创建索引的过程中需要注意列的顺序。
事务
ACID
原子性:Atomicity
一致性:Consistency
隔离性:Isolation
持久性:Durability
事务隔离级别有4种,InnoDB默认支持REPEATABLE READ。
InnoDB通过redo日志实现事务,redo日志是存储在磁盘的物理操作日志。
binlog是维护日志一致性在内存里的逻辑日志。
脏读是指一个事务提交之前,另一个事务来读取数据造成的数据不一致。
幻读问题就是一个事务中同一个SQL多次执行,结果集不同。
锁
Innodb支持行级锁。
行级锁分为共享锁和排他锁。
共享锁(S锁),只可以读,不可以修改
排它锁(X锁),不可读也不可写
意向锁(Intention Locks)
意向共享锁(IS),加行共享锁之前需要得到的锁
意向排他锁(IX),加行排他锁之前需要得到锁
行锁的存储结构
typedef struct lock_rec_struct lock_rec_t struct lock_rec_struct{ ulint space; /*space id*/ ulint page_no; /*page number*/ unint n_bits; /*number of bits in the lock bitmap*/ }
1
2
3
4
5
6
加锁逻辑:加锁-唯一索引的冲突检查-判断Gap锁或Next-Key锁-加X锁
面试侧重点
基本的查询语法
索引
锁
存储结构建议在索引的时候自己带出来点,给自己创造一些亮点
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。