2023-04-27 polardbx-LSM-tree的Parallel Recovery性能优化

news/2024/7/7 21:23:21

背景

数据库的Crash Recovery时长关系到数据库的可用性SLA、故障止损时间、升级效率等多个方面。本文描述了针对X-Engine数据库存储引擎的一种Crash Recovery优化手段,在典型场景下可以显著缩短数据库实例的故障恢复时间,提升用户使用感受。

当前面临的问题

X-Engine是阿里自研的基于LSM-tree架构的数据库存储引擎,对X-Engine的数据更新是将变更数据并行插入无锁内存表(MemTable),同时为了防止MemTable过大影响数据查找和数据恢复的效率,系统会不定期将MemTable转换成不可修改的内存表(ImmutableMemTables),并将ImmutableMemTables整体Flush落盘;对无锁内存表的持久化通过WAL机制保证。关于LSM-tree结构和X-Engine的数据分层存储机制,可以阅读文章:X-Engine 一条数据的漫游


X-Engine存储引擎的故障恢复需要读取所有WAL文件并重新生成所有ImmutableMemTables 和MemTables。当前X-Engine的Crash Recovery流程分为以下两步:

  1. X-Engine存储引擎元信息回放,恢复系统元信息数据到shutdown前状态

  2. wal文件回放,逐条读取record,进行crc校验后,恢复所有的ImmutableMemTables和MemTables到shutdown前状态


当前MySQL(XEngine)线上实例有宕机重启缓慢的现象,通过对相关现场分析和线下试验,WAL的回放占据了X-Engine宕机重启的绝大部分时间。结合现有实现分析࿰


http://lihuaxi.xjx100.cn/news/1076121.html

相关文章

IT技术发展与应用:TOP技能探讨及学习建议

随着信息技术的快速发展,IT技术已经深入到我们生活的方方面面。在这篇文章中,我们探讨了IT技术发展的历程和现在最吃香的技能TOP榜。同时,我们还分享了如何学习这些TOP技能的方法,包括自学、参加课程、参加线上或线下技术交流活动…

SQL——索引

💡 索引 在关系型数据库中,索引是一种单独的、物理上的对数据库表中的一列或多列的值进行排序的一种存储结构,他是某个表中的一列或着若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单(类似于图书目录&#x…

SQL select语句检索数据

编写SQL语句 SQL语句不区分大小写,可以输入在一行或多行中,关键字不能缩写或换行,字句通常放在单独的行中,可以适当使用缩进增加代码的可读性。 SQL SELECT 语句的功能 映射:选择由查询返回的表中列。可以根据需要选…

社科院与美国杜兰大学金融管理硕士项目——选择在职读研是正确的吗

这个世界上,根本没有正确的选择。我们只不过要努力奋斗,使当初的选择变得正确。最近有咨询项目的同学总是在纠结是否要在职读研,在职读研是否是一条正确的路。当我们为此纠结时,其实只有一条路,那就是选择向前走。往前…

ChatGPT搭建AI网站实战

1.概述 ChatGPT是一款基于GPT-3.5架构的大型语言模型,它能够进行自然语言处理和生成对话等任务。作为一款智能化的聊天机器人,ChatGPT有着广泛的应用场景,如在线客服、智能助手、个性化推荐等。今天笔者给大家分享一下如何使用ChatGPT的API模…

【Python/机器学习】不使用Conda安装Pytorch和Torchvision(Windows系统)

这篇文章介绍如何不使用conda等包管理系统在Windows系统上直接使用pip安装Pytorch和Torchvision。首先你需要有Python 3.6以上的64位环境(32位是不可以的哟!),并且假设你有NVIDIA显卡且已安装CUDA。 文章目录 1. 查看CUDA版本2. 找…

竞赛知识点4【搜索】

文章目录 复习栈和队列的概念树1、搜索1.1、深度优先搜索(dfs)1.1.1、概念1.1.2、例题1、输出n个数的全排列2、输出n个数中选m个的组合3、N皇后(8皇后的升级版)4、马踏棋盘1.1.3、DFS大体框架复习 栈和队列的概念 栈是限定仅在表头进行插入和删除操作的线性表(先进后出)…

ElasticJob-Lite 3.x 集成springBoot 实战 (一次性作业、定时作业)

文章目录 前言ElasticJob-Lite 3.x 集成springBoot 实战 (一次性作业、定时作业)1. ElasticJob简介2. ElasticJob-Lite 是什么3. 功能列表4. 所需依赖包5. 定时作业配置5.1. 作业:5.2. yml配置:5.3. 测试 6. 一次性任务配置、并手动触发6.1. 作业:6.2. yml配置:6.3. 测试 7. 其…