07 2021 档案

摘要:代码学习 在Redis处理命令过程中,会调用propagate和propagateExpire来将命令写入AOF日志文件feedAppendOnlyFile和传播给从库replicationFeedSlaves。 函数feedAppendOnlyFile只负责将aof日志写入到操作系统缓存,由函数f 阅读全文
posted @ 2021-07-31 20:37 TeyGao 阅读(547) 评论(0) 推荐(0) 编辑
摘要:事务回滚标志XID XID作为事务是否回滚的判断数据,在事务Prepare阶段分别写入Undo Log(内存)和Binlog Cache(内存)中,Undo日志会产生Redo日志,并在后续的flush阶段和Sync阶段写到操作系统文件缓存和物理磁盘上,在数据库实例故障恢复时,Undo Log能通过已 阅读全文
posted @ 2021-07-29 08:33 TeyGao 阅读(176) 评论(0) 推荐(0) 编辑
摘要:主从数据同步和AOF日志追加 Redis在命令成功执行后,会先将命令追加到AOF日志中,然后再依次推送给每个从节点。 /* Propagate the specified command (in the context of the specified database id) * to AOF a 阅读全文
posted @ 2021-07-26 19:20 TeyGao 阅读(240) 评论(0) 推荐(0) 编辑
摘要:MVCC实现 在InnoDB存储引擎中,每个表都是索引组织表,如果建表时没有指定主键索引,会自动创建一个6字节的自增列来作为隐藏主键。 每条聚簇索引的索引记录都包含下面两个隐藏列: 事务ID列,用于标识该版本记录由那个事务修改产生。 回滚指针列,用于指向“存放上一个版本记录数据”的Undo Log指 阅读全文
posted @ 2021-07-14 15:57 TeyGao 阅读(187) 评论(0) 推荐(0) 编辑
摘要:问题总结 问题:DML操作时先生成Undo Log是Redo Log? 答案:先生成Undo Log,再生成Redo Log。 在生成Undo Log并写入到Undo Space时,会产生Redo Log。 在故障恢复时,可以通过Redo Log来恢复Undo Log,再通过Undo Log来回滚事 阅读全文
posted @ 2021-07-13 20:27 TeyGao 阅读(214) 评论(0) 推荐(0) 编辑
摘要:功能特性 在MySQL中,对哈希索引的访问仅需要一次HASH计算即可定位到目标位置,而对B树索引的访问需要依次访问根节点>中间节点>叶子节点。 为优化B树索引需要访问多个"非叶子节点页"才能定位到"叶子节点页"的问题,InnoDB存储引擎通过哈希索引来帮助查询快速找到"目标叶子节点页"以提高查询性能 阅读全文
posted @ 2021-07-10 15:18 TeyGao 阅读(506) 评论(0) 推荐(0) 编辑
摘要:自适应哈希索引KEY和VALUE 在MySQL中,对于不同对象,哈希索引键值的计算各不相同,基本思路都是对查询的键进行fold,然后通过hash_calc_hash来计算对应所处哈希表中哈希槽(cell)。 对于自适应哈希索引,KEY对应的是逻辑记录经过fold后的值,VALUE对应的是记录所在的页 阅读全文
posted @ 2021-07-09 22:36 TeyGao 阅读(169) 评论(0) 推荐(0) 编辑
摘要:自适应哈希索引数据结构 对B+树的数据查找,需要遍历从根节点到叶子节点之间的每一层的节点,因此B+树的树高过高时,会影响B+树的查找效率。 Innodb存储引擎根据查询模式,对活跃的数据页中的记录进行哈希索引,以实现快速查找,解决B+树树高问题。 为标识查询模式和热点页,需要在索引和数据页上有相应的 阅读全文
posted @ 2021-07-09 18:33 TeyGao 阅读(127) 评论(0) 推荐(0) 编辑
摘要:1、自适应哈希索引初始化 在storage\innobase\buf\buf0buf.cc的函数buf_pool_init负责初始化Buffer pool, 会调用btr_search_sys_create来初始化AHI,并分配当前Buffer pool内存的1/64给AHI。 /** Create 阅读全文
posted @ 2021-07-09 17:25 TeyGao 阅读(125) 评论(0) 推荐(0) 编辑
摘要:问题描述 在做DML操作时,是先修改buffer pool数据,还是先记录redo log呢? 答案:先修改buffer pool数据,然后再记录redo log。 代码学习 在page0cur.cc文件有page_cur_insert_rec_low方法,该方法用于插入新记录,其方法中有如下注解: 阅读全文
posted @ 2021-07-02 22:46 TeyGao 阅读(592) 评论(0) 推荐(0) 编辑