当前位置: 首页 > news >正文

7.5.4 MVCC优化测试

作者: 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版本优化改进还是比较明显,建议升级到较新的版本。

相关文章:

7.5.4 MVCC优化测试

作者: h5n1 原文来源: https://tidb.net/blog/4e02d900 1. 背景 由于MVCC 版本数量过多导致rocksdb扫描key数量过多影响SQL执行时间是tidb经常出现问的问题,tidb也一直在致力于优化该问题。 一些优化方式包括比: (1) 从传统…...

STM32 FreeRTOS 事件标志组

目录 事件标志组简介 基本概念 1、事件位(事件标志) 2、事件组 事件组和事件位数据类型 事件标志组和信号量的区别 事件标志组相关API函数介绍 事件标志组简介 基本概念 当在嵌入式系统中运行多个任务时,这些任务可能需要相互通信&am…...

生成树机制实验

1 实验内容 1、基于已有代码,实现生成树运行机制,对于给定拓扑(four_node_ring.py),计算输出相应状态下的生成树拓扑 2、构造一个不少于7个节点,冗余链路不少于2条的拓扑,节点和端口的命名规则可参考four_node_ring.py,使用stp程序计算输出生成树拓扑 2 实验原理 一、…...

企业分类相似度筛选实战:基于规则与向量方法的对比分析

文章目录 企业表相似类别筛选实战项目背景介绍效果展示基于规则的效果基于向量相似的效果 说明相关文章推荐 企业表相似类别筛选实战 项目背景 在当下RAG(检索增强生成)技术应用不断发展的背景下,掌握文本相似算法不仅能够助力信息检索&…...

2024年博客之星年度评选—创作影响力评审入围名单公布

2024年博客之星活动地址https://www.csdn.net/blogstar2024 TOP 300 榜单排名 用户昵称博客主页 身份 认证 评分 原创 博文 评分 平均 质量分评分 互动数据评分 总分排名三掌柜666三掌柜666-CSDN博客1001002001005001wkd_007wkd_007-CSDN博客1001002001005002栗筝ihttps:/…...

递归40题!再见递归

简介:40个问题,有难有易,均使用递归完成,需要C/C的指针、字符串、数组、链表等基础知识作为基础。 1、数字出现的次数 由键盘录入一个正整数,求该整数中每个数字出现的次数。 输入:19931003 输出&#xf…...

社区版Dify实现文生视频 LLM+ComfyUI+混元视频

社区版Dify实现文生视频 LLMComfyUI混元视频 一、 社区版Dify实现私有化混元视频效果二、为什么社区版Dify可以在对话框实现文生视频?LLMComfyUI混元视频 实现流程图(重点)1. 文生视频模型支持ComfyUI2. ComfyUI可以轻松导出API实现封装3. Di…...

【LLM】Openai-o1及o1类复现方法

note 可以从更为本质的方案出发,通过分析强化学习的方法,看看如何实现o1,但其中的核心就是在于,如何有效地初始化策略、设计奖励函数、实现高效的搜索算法以及利用强化学习进行学习和优化。 文章目录 note一、Imitate, Explore, …...

jlatexmath-android如何实现自定义渲染字符

使用jlatexmath-android的过程,如果出现个别字符渲染不了,会导致无法显示 常用的做法是新增自定义字体切换系统默认字体渲染,下面我们介绍第2种方法。 修改流程: 1、到jlatexmath-android的官网下载源码到本地,导入…...

dockerhub上一些镜像

K8s下网络排障工具 https://hub.docker.com/r/nicolaka/netshoot ex kubectl run tmp-shell --rm -i --tty --image nicolaka/netshoot -- /bin/bash # 主机的net ns下运行 kubectl run tmp-shell --rm -i --tty --overrides{"spec": {"hostNetwork": tru…...

Python 爬虫学习指南与资料分享

Python爬虫学习资料 Python爬虫学习资料 Python爬虫学习资料 在数字化浪潮中,Python 爬虫作为强大的数据获取工具,为众多领域提供关键支持。想要系统掌握这门技术,以下的学习指南与资料分享将为你照亮前行道路。 一、学习指南 入门奠基 …...

TypeScript特有运算符和操作符

文章目录 TypeScript 特有运算符1. keyof2. typeof3. in4. extends5. is6. as 和 <Type>7. never8. readonly9. ?10. []11. | 和 &12. !13. ?? 和 ?. 总结 TypeScript 特有运算符 1. keyof 作用&#xff1a;用于获取对象类型的所有键&#xff08;属性名&#x…...

介绍下常用的前端框架及时优缺点

以下是一些常用的前端框架及其优缺点介绍&#xff1a; React • 优点 • 组件化架构&#xff1a;可构建可复用的UI组件&#xff0c;提高开发效率和组件可维护性。 • 虚拟DOM&#xff1a;高效更新页面&#xff0c;减少直接操作DOM的性能开销。 • 灵活性和可扩展性&#xf…...

MATLAB算法实战应用案例精讲-【数模应用】图形变换和复杂图形组合(附python和MATLAB代码实现)

目录 前言 算法原理 变换 1二维变换 1.1缩放 1.2 翻转 1.3剪切 1.4 旋转 2齐次坐标 2.1引入齐次坐标的原因 2.2 二维齐次坐标 2.3二维仿射变换 2.4逆变换 4组合变换 5三维变换(由二维变换推理而来) 5.1三维齐次坐标 5.2 三维仿射变换 5.3 缩放和平移 5.4…...

SpringMVC 实战指南:打造高效 Web 应用的秘籍

第一章&#xff1a;三层架构和MVC 三层架构&#xff1a; 开发服务器端&#xff0c;一般基于两种形式&#xff0c;一种 C/S 架构程序&#xff0c;一种 B/S 架构程序使用 Java 语言基本上都是开发 B/S 架构的程序&#xff0c;B/S 架构又分成了三层架构三层架构&#xff1a; 表现…...

doris: Flink导入数据

使用 Flink Doris Connector 可以实时的将 Flink 产生的数据&#xff08;如&#xff1a;Flink 读取 Kafka&#xff0c;MySQL 中的数据&#xff09;导入到 Doris 中。 使用限制​ 需要依赖用户部署的 Flink 集群。 使用 Flink 导入数据​ 使用 Flink 导入数据&#xff0c;详…...

Nginx在Linux中的最小化安装方式

1. 安装依赖 需要安装的东西&#xff1a; wget​&#xff0c;方便我们下载Nginx的包。如果是在Windows下载&#xff0c;然后使用SFTP上传到服务器中&#xff0c;那么可以不安装这个软件包。gcc g​&#xff0c;Nginx是使用C/C开发的服务器&#xff0c;等一下安装会用到其中的…...

CSS布局新视角:BFC(块级格式化上下文)的作用与优势

在CSS布局的世界中&#xff0c;BFC&#xff08;Block Formatting Context&#xff0c;块级格式化上下文&#xff09;是一个既重要又神秘的概念。它不仅是解决复杂布局问题的关键工具&#xff0c;也是提升页面性能和用户体验的重要手段。本文将从新视角出发&#xff0c;深入探讨…...

PCL K4PCS算法实现点云粗配准【2025最新版】

目录 一、算法原理1、算法概述2、算法流程3、参考文献二、 代码实现1、原始版本2、2024新版三、 结果展示本文由CSDN点云侠原创,原文链接,首发于:2020年4月27日。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的抄袭狗。 博客长期更新,本文最近一次更新时间为…...

02IO篇(D2_深入IO模型)

目录 本章目标 一、用户空间和内核空间 二、PIO与DMA 三、缓存IO和直接IO 1. 缓存IO 2. 直接IO 三、IO访问方式 1. 磁盘IO 2. 网络IO 3. 磁盘IO和网络IO对比 四、Socket网络编程 1. 客户端 2. 服务端 示例一 示例二 示例三 五、同步IO和异步IO 六、阻塞IO和非…...

专业数据恢复工具对决:UFS Explorer与R-Studio的实战选型指南

1. 数据恢复工具的核心价值与选型逻辑 当硬盘突然罢工或重要文件被误删时&#xff0c;专业数据恢复软件就像数字世界的急救医生。我经历过太多凌晨三点被叫醒处理服务器崩溃的案例&#xff0c;选对工具往往能决定数据"复活"的成功率。UFS Explorer和R-Studio这对老对…...

PHY芯片寄存器设计揭秘:从5位地址到分页扩展的演进史

PHY芯片寄存器设计演进&#xff1a;从5位地址到分页扩展的技术革命 当我们在享受千兆以太网带来的高速数据传输时&#xff0c;很少有人会想到这背后隐藏着一场持续了数十年的寄存器架构演进。PHY芯片作为网络通信的物理层核心&#xff0c;其寄存器设计经历了从简单固定到复杂可…...

如何用XHS-Downloader解决内容采集难题?3大维度提升效率90%

如何用XHS-Downloader解决内容采集难题&#xff1f;3大维度提升效率90% 【免费下载链接】XHS-Downloader 小红书&#xff08;XiaoHongShu、RedNote&#xff09;链接提取/作品采集工具&#xff1a;提取账号发布、收藏、点赞、专辑作品链接&#xff1b;提取搜索结果作品、用户链接…...

影墨·今颜模型API接口开发与调用全指南

影墨今颜模型API接口开发与调用全指南 你是不是已经成功部署了影墨今颜模型&#xff0c;看着它能在本地生成惊艳的图片&#xff0c;心里正盘算着怎么把它变成一个能对外服务的“产品”&#xff1f;比如&#xff0c;让公司的设计团队直接调用&#xff0c;或者集成到自己的应用里…...

SPM12实战:从nii文件元数据解析到精准slice timing配置

1. 理解nii文件与slice timing的基础概念 当你第一次拿到fMRI的nii格式数据时&#xff0c;可能会被这个黑箱般的文件格式搞得一头雾水。nii文件就像是把整个大脑扫描过程打包成一个数字包裹&#xff0c;里面不仅包含三维的脑部图像数据&#xff0c;还隐藏着关键的扫描参数。我在…...

Java工业协议解析必须掌握的3种字节序处理范式,附ISO/IEC 61131-3兼容性验证报告

第一章&#xff1a;Java工业协议解析必须掌握的3种字节序处理范式&#xff0c;附ISO/IEC 61131-3兼容性验证报告大端序&#xff08;Big-Endian&#xff09;的标准化解析实践 在Modbus TCP与IEC 61850 ACSI通信中&#xff0c;设备寄存器默认采用网络字节序&#xff08;即大端序&…...

需要控制重复点击按钮的通用方法

如图所示 在需要控制重复点击的地方使用通用方法去控制 省时省力 比用传统的分页定时器更方便...

3种革命性技术突破:解放城通网盘下载速度的终极方案

3种革命性技术突破&#xff1a;解放城通网盘下载速度的终极方案 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet 你是否曾经面对城通网盘那令人绝望的下载速度而束手无策&#xff1f;当急需获取重要文件…...

Qwen3-14B镜像轻量化设计:50GB系统盘+40GB数据盘高效空间管理

Qwen3-14B镜像轻量化设计&#xff1a;50GB系统盘40GB数据盘高效空间管理 1. 镜像概述与核心优势 Qwen3-14B私有部署镜像是一款专为RTX 4090D 24GB显存显卡优化的轻量化解决方案。通过精心设计的50GB系统盘40GB数据盘架构&#xff0c;实现了大模型部署的空间效率最大化。这个镜…...

Ostrakon-VL-8B效果展示:看AI如何从店铺图片中识别问题与机会

Ostrakon-VL-8B效果展示&#xff1a;看AI如何从店铺图片中识别问题与机会 1. 引言&#xff1a;当AI成为你的店铺巡检专家 想象一下这样的场景&#xff1a;你是一家连锁超市的运营经理&#xff0c;每天需要检查数十家门店的货架陈列、商品摆放和卫生状况。传统方法需要派遣大量…...