7.5.4 MVCC优化测试

news2025/1/19 19:11:58

作者: h5n1 原文来源: https://tidb.net/blog/4e02d900

1. 背景

由于MVCC 版本数量过多导致rocksdb扫描key数量过多影响SQL执行时间是tidb经常出现问的问题,tidb也一直在致力于优化该问题。 一些优化方式包括比:

(1) 从传统的集中式GC变为GC in compaction filter,在rocksdb compact时进行GC,降低GC时性能影响,同时能将GC后的数据直接清理。

(2) 引入region-compact-min-redundant-rows、region-compact-redundant-rows-percent参触发更多的compact 以清理冗余的mvcc版本

(3) 修复GC相关的bug ,如: https://asktug.com/t/topic/932932

(4) 7.5.4及该版本后的版本进一步通过mvcc.delete_rows方式解决region-compact-min-redundant-rows不能触发的场景。

 有小伙伴在7.5.1版本遇到了这个问题,有一张表目前只有40000多万数据,但全表扫描出来要6亿多total\_keys,GC设置为24小时,检查GC tso推进正常

image.png

image.png

但是检查该表的region 发下最小的tso时间还很早,很明显有些mvcc数据还没有被GC,也就没法清理。

image.png

image.png

  猜测是由于gc in compaction filter等特性导致历史数据没有被GC,而且region上没有多少冗余的mvcc版本导致region-compact-min-redundant-rows等未起作用。

 通过7.5.4 版本引入的MVCC优化特性:**优化存在大量 DELETE 版本时 RocksDB 的 compaction 触发机制,以加快磁盘空间回收 #17269**  issue描述,小伙伴很可能也是这种场景,目前暂未确认,也未进行版本升级尝试。

要解决上述问题,除了版本升级外还可以通过以下方式解决

(1) 修改参数enable-compaction-filter 关闭compaction filter使用传统GC模式

(2) 使用region compact 手工对表compact,可以通过threads设置并发度。

(3) 重建表表后清理原表,但影响业务

(4) 降低region-compact-min-redundant-rows、region-compact-redundant-rows-percent参数值以触发更多compact,但如果冗余mvcc极少的情况下可能没效果。

2. 测试内容
本测试是验证7.5.4版是否能够解决背景中描述的问题,测试时初始化一张表,然后分段删除表数据,只保留中间和末尾的极少部分数据。

(1) 在7.5.1版本按要求删除数据后,观察GC情况和全表扫描的total_keys数量。

(2) 重启7.5.1集群观察重启操作对compact/GC是否有影响,以排除升级重启后影响GC。

(3) 升级到7.5.4版本观察测试表的GC情况和全表扫描的total_keys数量。

(4) 在7.5.4版本按照步骤1重新测试和观察。

测试中相关参数保持默认值,如GC时间。

3. 版本7.5.1删除后测试
测试表插入了42578713条数据,按要求删除后剩余18754条。

刚删完(2025-01-14 14:22:53)后total_keys:84985676

image.png

2个多小时后total_keys:35037709

image.png

直到7个小时后key数量一直保持稳定未变化,total_keys:35037709

image.png

从监控可以看到17:00后GC几乎无活动。

image.png

4. 测试集群重启影响

  重启集群后经过20多分钟观察,keys降到以下数值后未变化,total keys从重启前的35037709降为34866180,减少171529,约0.4%

image.png

从GC监控上看有3次GC,但实际是从21:30的GC后 keys数量就一直未变化。

image.png

问题: 再重启后观察total keys:61222618数量比重启前的35037709还要高很多,直到最后稳定在34866180, 为什么这个会变高呢?

image.png

5. 升级7.5.4版本

使用offline方式升级到7.5.4版本后 观察GC情况,可以看到22:10分左右完成升级后-22:46 totalkeys降到了5295017

image.png

 从监控上可以看到明显GC活动比单纯的重启集群要更剧烈些

image.png

6. 新版本重复测试
在新的7.5.4集群重复前面的的测试观察delete数据后GC情况。初始 51611460条数据,删除后剩余8837条。

9:48 首次检查total\_keys;100164327

image.png

10:22 再次检查total_keys;17446709,34分钟内totalkeys减少了82717618。

image.png

  监控上看GC/compact活动也很频繁。

image.png

7. 结论

7.5.4版本对于大量delete版本优化改进还是比较明显,建议升级到较新的版本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2279035.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024年AI与大数据技术趋势洞察:跨领域创新与社会变革

目录 引言 技术洞察 1. 大模型技术的创新与开源推动 2. AI Agent 智能体平台技术 3. 多模态技术的兴起:跨领域应用的新风口 4. 强化学习与推荐系统:智能化决策的底层驱动 5. 开源工具与平台的快速发展:赋能技术创新 6. 技术安全与伦理:AI技术的双刃剑 7. 跨领域技…

vulnhub靶场【Lampiao靶机】,主要考察提权,脏牛提权

前言 靶机:lampiao,IP地址为192.168.10.11 攻击:kali,IP地址为192.168.10.2 都采用虚拟机,网卡为桥接模式 该靶机目前只剩下一个了,之前记得是有两台构成系列的。 文章中涉及的靶机,来源于v…

ASP .NET Core 学习(.NET9)配置接口访问路由

新创建的 ASP .NET Core Web API项目中Controller进行请求时,是在地址:端口/Controller名称进行访问的,这个时候Controller的默认路由配置如下 访问接口时,是通过请求方法(GET、Post、Put、Delete)进行接口区分的&…

构建core模块

文章目录 1.环境搭建1.sunrays-common下新建core模块2.引入依赖,并设置打包常规配置 2.测试使用1.启动!1.创建模块2.引入依赖3.application.yml 配置MySQL和Minio4.创建启动类5.启动测试 2.common-web-starter1.目录2.WebController.java3.结果 3.common…

VRTK4 记录抓取错误

左手原本可以正常抓取,但是当右手拿起一个物体时,左手抓取右手的线性驱动器,只有部分区域可以抓取 原因是左手的判定物体的层级错误 应该在Collections下,之前错误的和Collections同一层级,导致抓取有时可以有时不可以…

游戏画质升级史的思考

画质代入感大众玩家对游戏的第一印象与评判标准 大众玩家还没到靠游戏性等内在因素来评判游戏的程度。 画面的重要性,任何时候都不能轻视。 行业就是靠摩尔定律来推动进步的。 NS2机能达到PS4到PS4PRO之间的水准,5050达到8G显存,都会引发连…

Windows11电脑总是一闪一闪的,黑一下亮一些怎么解决

Windows11电脑总是一闪一闪的,黑一下亮一些怎么解决 1. 打开设备管理器2. 点击显示适配器3. 更新下方两个选项的驱动3.1 更新驱动Inter(R) UHD Graphixs3.2 更新驱动NVIDIA GeForce RTX 4060 Laptop GPU 4. 其他文章快来试试吧🥰 1. 打开设备管理器 在电…

【RAG落地利器】向量数据库Qdrant使用教程

TrustRAG项目地址🌟:https://github.com/gomate-community/TrustRAG 可配置的模块化RAG框架 环境依赖 本教程基于docker安装Qdrant数据库,在此之前请先安装docker. Docker - The easiest way to use Qdrant is to run a pre-built Docker i…

【逆境中绽放:万字回顾2024我在挑战中突破自我】

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” 文章目录 一、引言二、个人成长与盘点情感与心理成长学习与技能提升其它荣誉 三、年度创作历程回顾创作内容概…

HTTP / 2

序言 在之前的文章中我们介绍过了 HTTP/1.1 协议,现在再来认识一下迭代版本 2。了解比起 1.1 版本,后面的版本改进在哪里,特点在哪里?话不多说,开始吧⭐️! 一、 HTTP / 1.1 存在的问题 很多时候新的版本的…

于灵动的变量变幻间:函数与计算逻辑的浪漫交织(下)

大家好啊,我是小象٩(๑ω๑)۶ 我的博客:Xiao Xiangζั͡ޓއއ 很高兴见到大家,希望能够和大家一起交流学习,共同进步。 这一节我们主要来学习单个函数的声明与定义,static和extern… 这里写目录标题 一、单个函数…

pthread_create函数

函数原型 pthread_create 是 POSIX 线程&#xff08;pthread&#xff09;库中的一个函数&#xff0c;用于在程序中创建一个新线程。 #include <pthread.h>int pthread_create(pthread_t *thread, const pthread_attr_t *attr,void *(*start_routine) (void *), void *a…

VSCode 的部署

一、VSCode部署 (1)、简介 vsCode 全称 Visual Studio Code&#xff0c;是微软出的一款轻量级代码编辑器&#xff0c;免费、开源而且功能强大。它支持几乎所有主流的程序语言的语法高亮、智能代码补全、自定义热键、括号匹配、代码片段、代码对比Diff、版本管理GIT等特性&…

模之屋模型导入到UE5

去模之屋随便下个模型 安装Blender2.8 插件 cats-blender-plugin &#xff0c; 打开blender 2.8转换 pmx转换fbx https://github.com/absolute-quantum/cats-blender-plugin Index of /release/Blender2.80/ 修改单位 修复贴图 更高清了 点fix model 修复模型 改为编辑模式…

用Cursor生成一个企业官网前端页面(生成腾讯、阿里官网静态页面)

用Cursor生成一个企业官网前端页面 第一版&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><…

css 实现自定义虚线

需求&#xff1a; ui 画的图是虚线&#xff0c;但是虚线很宽正常的border 参数无法做到 进程&#xff1a; 尝试使用 border&#xff1a;1px dashed 发现使用这个虽然是虚线但是很短密密麻麻的 这并不是我们想要的那就只能换方案 第一个最简单&#xff0c;让ui 画一个图然…

【鸿蒙】0x02-LiteOS-M基于Qemu RISC-V运行

OpenHarmony LiteOS-M基于Qemu RISC-V运行 系列文章目录更新日志OpenHarmony技术架构OH技术架构OH支持系统类型轻量系统&#xff08;mini system&#xff09;小型系统&#xff08;small system&#xff09;标准系统&#xff08;standard system&#xff09; 简介环境准备安装QE…

力扣动态规划-2【算法学习day.96】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向&#xff08;例如想要掌握基础用法&#xff0c;该刷哪些题&#xff1f;建议灵神的题单和代码随想录&#xff09;和记录自己的学习过程&#xff0c;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关…

细说STM32F407单片机电源低功耗SleepMode模式及应用示例

目录 一、STM32F4的低功耗模式 1、睡眠(Sleep)模式 2、停止(Stop)模式 3、待机(Standby)模式 二、睡眠模式 1、进入睡眠模式 2、睡眠模式的状态 3、退出睡眠模式 4、SysTick的影响 三、应用示例 1、工程配置 &#xff08;1&#xff09; 时钟、DEBUG、GPIO、CodeGen…

【竞技宝】LOL:ning直播再次锐评

北京时间1月18日,目前英雄联盟LPL2025正在如火如荼的进行之中,很多队伍都已经打完了新赛季的首场比赛,其中就包括AL战队,AL在休赛期进行了大幅度的人员调整,整体实力相比之前增强了不少,在16日的比赛中,AL3-0轻松击败LGD拿下了赛季开门红,而AL的打野选手tarzan在本场比赛中表现…