摘要:
MVCC实现 在InnoDB存储引擎中,每个表都是索引组织表,如果建表时没有指定主键索引,会自动创建一个6字节的自增列来作为隐藏主键。 每条聚簇索引的索引记录都包含下面两个隐藏列: 事务ID列,用于标识该版本记录由那个事务修改产生。 回滚指针列,用于指向“存放上一个版本记录数据”的Undo Log指 阅读全文
摘要:
问题总结 问题:DML操作时先生成Undo Log是Redo Log? 答案:先生成Undo Log,再生成Redo Log。 在生成Undo Log并写入到Undo Space时,会产生Redo Log。 在故障恢复时,可以通过Redo Log来恢复Undo Log,再通过Undo Log来回滚事 阅读全文
摘要:
功能特性 在MySQL中,对哈希索引的访问仅需要一次HASH计算即可定位到目标位置,而对B树索引的访问需要依次访问根节点>中间节点>叶子节点。 为优化B树索引需要访问多个"非叶子节点页"才能定位到"叶子节点页"的问题,InnoDB存储引擎通过哈希索引来帮助查询快速找到"目标叶子节点页"以提高查询性能 阅读全文
摘要:
自适应哈希索引KEY和VALUE 在MySQL中,对于不同对象,哈希索引键值的计算各不相同,基本思路都是对查询的键进行fold,然后通过hash_calc_hash来计算对应所处哈希表中哈希槽(cell)。 对于自适应哈希索引,KEY对应的是逻辑记录经过fold后的值,VALUE对应的是记录所在的页 阅读全文
摘要:
自适应哈希索引数据结构 对B+树的数据查找,需要遍历从根节点到叶子节点之间的每一层的节点,因此B+树的树高过高时,会影响B+树的查找效率。 Innodb存储引擎根据查询模式,对活跃的数据页中的记录进行哈希索引,以实现快速查找,解决B+树树高问题。 为标识查询模式和热点页,需要在索引和数据页上有相应的 阅读全文
摘要:
1、自适应哈希索引初始化 在storage\innobase\buf\buf0buf.cc的函数buf_pool_init负责初始化Buffer pool, 会调用btr_search_sys_create来初始化AHI,并分配当前Buffer pool内存的1/64给AHI。 /** Create 阅读全文
摘要:
问题描述 在做DML操作时,是先修改buffer pool数据,还是先记录redo log呢? 答案:先修改buffer pool数据,然后再记录redo log。 代码学习 在page0cur.cc文件有page_cur_insert_rec_low方法,该方法用于插入新记录,其方法中有如下注解: 阅读全文