作业帮 TiDB 7.5.x 使用经验

作者: 是我的海 原文来源: https://tidb.net/blog/5f9784d3

近期在使用 TiDB 时遇到的一些小问题的梳理总结,大部分版本都在6.5.6和7.5.2

1、limit 导致的扫描量过大的优化

研发定时任务每天需要扫描大量数据,到时机器网卡被打满,严重影响集群性能。 这个 SQL 的主要问题在于: a. ha3data 是text 字段

b. 虽然是 limit 1000 但是实际上扫描的量远超过1000 条 图片

SELECT utime, ha3Data  FROM  tblAdxxxx  WHERE  utime <= 1718804236  AND utime >= 1
AND (deleted = 0)  ORDER BY  utime DESC  LIMIT  1000

图片图片

解决办法: 1、将utime 时间范围缩短,但是研发人员认为修改成本高 2、修改tidb_opt_limit_push_down_threshold 的值大于1000 第二种方法官方老师推荐不要直接修改优化器的参数,可能会遇到未知问题,影响其他sql ,建议在语句里加hint

SELECT  /*+ SET_VAR(tidb_opt_limit_push_down_threshold=2000) */   utime,   ha3Data FROM

修改之后,网卡使用立即下降 图片

2、为表增加ttl 属性自动删除过期数据导致的raft cpu 飙高

我们使用7.5.2 版本的主要初衷是使用自动过期,可以让研发不用手动清理数据,但是在使用的时候注意两点 a. 尽量在业务低峰时段进行ttl 的操作(通过参数设置)

b. 调小ttl 相关的参数

MySQL [(none)]> show variables like '%ttl%';
+-----------------------------------------+-------------+
| Variable_name                           | Value       |
+-----------------------------------------+-------------+
| tidb_ttl_delete_batch_size              | 100         |
| tidb_ttl_delete_rate_limit              | 0           |
| tidb_ttl_delete_worker_count            | 2           |
| tidb_ttl_job_enable                     | ON          |
| tidb_ttl_job_schedule_window_end_time   | 07:23 +0800 |
| tidb_ttl_job_schedule_window_start_time | 23:11 +0800 |
| tidb_ttl_running_tasks                  | -1          |
| tidb_ttl_scan_batch_size                | 300         |
| tidb_ttl_scan_worker_count              | 2           |
+-----------------------------------------+-------------+

图片 从tikv-details 的grpc 监控中可以看到有大量的ttl qps, 将ttl 的运行时间调整成半夜时间范围后,raft cpu 使用率明显下降 图片

3、表的自增id 连续性问题的

业务反馈表的自增id 不够连续,每次都是增加2 个步长,研发人员担心涨的过快超过下游业务消费时出现类型溢出的问题,想要实现mysql 那样的连续递增 图片 解决办法:

为表增加AUTO_CACHE_ID 注意:据社区小伙伴反馈,7.5.1 这个属性有bug ,并且7.5.1 还有cdc 相关的配置不兼容6.5.x 的bug, 需要升级到7.5.2 之后, 但是7.5.2 发现了在fast-ddl 模式下增加索引卡住的情况 https://asktug.com/t/topic/1030933

4、频繁删除数据导致越来越慢的问题

图片 问题原因: 在删除数据后有大量的过期版本,但是rocksdb compact 不够及时,导致后续删除的时候会扫描大量的过期版本而越来越慢,key_skipped_count 会特别大 解决办法: 1、删除的时候尽量控制条件的范围比如使用id 或者时间字段做小范围的限制 2、等待8.x 版本的新功能每天增量compact

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

开放式耳机好还是入耳式耳机好?2024五款热销开放式耳机推荐!

开放式耳机与入耳式耳机各有优缺点&#xff0c;适合不同的使用场景和用户需求。 开放式耳机的优点主要包括&#xff1a; 1. 佩戴舒适性好&#xff0c;由于设计宽松&#xff0c;不会给耳朵带来压迫感&#xff0c;适合长时间使用 。 2. 透气性能好&#xff0c;尤其在夏天或运动…

《江南:在爱开始的地方等你》将上映 赖雨濛刘冬沁演绎刻骨之恋

在等到你之前&#xff0c;我们的故事一直未完待续。 用这句话来诠释电影《江南&#xff1a;在爱开始的地方等你》最为精准不过&#xff0c;该片改编自康锐原创小说《月落姑苏》&#xff0c;由康锐导演、编剧&#xff0c;赖雨濛、刘冬沁领衔主演、朱丹妮、王沛为、金巧巧、阎青…

Linux/Windows下线程间通信机制及其API总结

线程间通信&#xff08;Thread Inter-Communication, TIC&#xff09;是指在一个进程内的多个线程之间进行数据交换和同步的方法。与进程间通信相比&#xff0c;线程间通信通常更简单、更高效&#xff0c;因为它们共享相同的内存空间。下面是一些常见的线程间通信机制及其相关A…

vue-element-admin解决三级目录的KeepAlive缓存问题(详情版)

vue-element-admin解决三级目录的KeepAlive缓存问题&#xff08;详情版&#xff09; 本文章将从问题出现的角度看看KeepAlive的缓存问题&#xff0c;然后提出两种解决方法。本文章比较详细&#xff0c;如果只是看怎么解决&#xff0c;代码怎么改&#xff0c;请前往配置版。 一…

【原创教程】电气电工07:网线的制作方法

电气电工经常会遇到做网线,我们做网线需要网线钳与测试仪。需要了解网线的两种接线标准。 我们来看一下网线钳的操作步骤: 这种压线钳也同时具有剥线、剪线功能。 用这种网线钳能制作RJ45网络线接头。RJ11电话线接头、4P电话线接头。适用于RJ45,RJ11型网线 做网线的时候我…

Temu全托管和半托管的区别:一文说清temu全托和半托的差异

TEMU在今年3月再出王炸&#xff0c;上线半托管模式。这是TEMU继全托管模式爆火跨境圈之后的又一个大动作。那么&#xff0c;TEMU全托管和TEMU半托管有哪些不同&#xff1f;卖家朋友应该如何选择呢&#xff1f;今天给大家详细拆解一下。 TEMU全托管和半托管有什么区别 首先是定…

汇编语言lea指令取数组偏移地址

最近看到一条指令&#xff0c;x86汇编&#xff0c; LEA BX, 6[DI] 根据资料&#xff0c;它的含义是&#xff0c;某数组含20个元素&#xff0c;每个元素占一个字节&#xff0c;序号为0~19。设DI指向数组开头处&#xff0c;把序号为6的元素的偏移地址送到BX中&#xff1b; lea指令…

如何进行长截图的两种方法

前言 本文主要讲2种截图方式&#xff0c;分别是谷歌和QQ。 谷歌分为Web端 和 移动端&#xff0c;选一种即可。 第一种&#xff1a;谷歌浏览器控制台自带的 1.先把控制台语言更改为中文&#xff0c;方便查看 ①.按F12&#xff0c;点击设置面板 ②.修改语言为中文并关闭 ③.点击…

BFS解决单源最短路问题

目录 迷宫中离入口最近的出口 最小基因变化 单词接龙 为高尔夫比赛砍树 迷宫中离入口最近的出口 题目 思路 使用宽度优先遍历解决这道题&#xff0c;需要一个二维数组标记是否被遍历过&#xff0c;也需要一个队列辅助完成宽度优先遍历&#xff0c;类似于水波纹一样&#x…

java接口 controller层接收list集合传参,postman 调用接口时required parameter XXX is not present

开发过程中开发一个java接口 controller层接收list集合传参&#xff0c;然后postman调用一直不成功&#xff0c;报错 使用RequestParam方式&#xff0c;如果postman 调用接口时报错required parameter XXX is not present 可能是&#xff08;value“items”&#xff09;跟你输…

线索获取:多渠道获客策略解析

在当今商业环境中&#xff0c;企业面临着激烈的市场竞争和不断变化的客户需求。在此背景下&#xff0c;销售线索作为销售活动的基础和起点&#xff0c;重要性更加凸显&#xff0c;尤其是在营销精耕的当下&#xff0c;做好线索的精细化管理成为企业获取竞争优势的关键环节之一。…

数据结构----队列

1 什么是队列&#xff1f; 只允许在两端进行插入和删除操作的线性表&#xff0c;在队尾插入&#xff0c;在队头删除 插入的一端&#xff0c;被称为"队尾"&#xff0c;删除的一端被称为"队头" 在队列操作过程中&#xff0c;为了提高效率&#xff0…

《重生到现代之从零开始的C语言生活》—— 指针3

数组名的理解 在我们使用&arr[0]的方式拿到了数组第一个元素的地址&#xff0c;但是其实&#xff0c;数组名本来就地址&#xff0c;而且是数组首元素的地址 所以数组名就是数组首元素的地址 但是会有两个例外 sizeof(数组名)&#xff0c;sizeof中单独放数组名&#xff0c…

[Linux] 查看系统资源 (持续更新中)

概述 在Linux中&#xff0c;有许多命令和工具可用于查看系统的资源使用情况。以下是一些常用的方式&#xff1a; top&#xff1a;top命令是最常见的实时系统监视工具之一。它显示了当前运行的进程列表&#xff0c;以及每个进程的CPU、内存使用情况、nice值等信息。top命令还会…

帆软报表,达梦数据库驱动上传失败

1、按照正常操作新建数据库连接&#xff0c;上传准备好的达梦驱动时&#xff0c;提示如图一需要修改SystemConfig.driverUpload为true才可以。 2、FineDB存储了数据决策系统中除平台属性配置以外的所有信息。详情请参见&#xff1a; FineDB 数据库简介。 3、因此管理员可通过…

Kubectl基础命令使用

一.Kubectl 基础命令 格式&#xff1a; kubectl [command] [TYPE] [NAME] [FLAGS] kubectl 是 Kubernetes 的命令行工具&#xff0c;用于管理 Kubernetes 集群。以下是一些常用的 kubectl 命令及其选项&#xff1a; 常用命令 获取资源 列出所有资源类型&#xff08;Pods、De…

机器学习|什么是梯度下降(小白向)|探寻最优解之路

文章目录 前言一、什么是梯度下降&#xff1f;二、梯度下降法一般步骤1.确定一个小目标——预测函数2.找到差距——代价函数3.明确搜索方向——梯度计算4.一步要走多远&#xff1f;——学习率 三、梯度下降的分类批量梯度下降&#xff08;Batch Gradient Descent&#xff09;随…

2007-2022年上市公司资源节约数据

2007-2022年上市公司资源节约数据 1、时间&#xff1a;2007-2022年 2、来源&#xff1a;上市公司年报、社会责任报告、上市公司网站信息 3、指标&#xff1a;水资源节约、电力节约、原煤节约、天然气节约、汽油节约、柴油节约、集中供热节约、折算成统一标准煤共计节约 4、…

flume--数据从kafka到hdfs发生错误

解决&#xff1a; #1.将flume自带的依赖删除 mv /opt/installs/flume1.9/lib/guava-11.0.2.jar /opt/installs/flume1.9/lib/guava-11.0.2.jar.bak #2.将hadoop的依赖发送到flume下 cp /opt/installs/hadoop3.1.4/share/hadoop/common/lib/guava-27.0-jre.jar /opt/installs/f…

有哪些同声传译软件?精选5款实用工具

在浪漫之都巴黎&#xff0c;每一步都踏着历史与艺术的韵律。从埃菲尔铁塔下仰望的震撼&#xff0c;到塞纳河畔悠闲的咖啡时光&#xff0c;打卡巴黎地标已不再满足于传统方式。 如今&#xff0c;#打卡巴黎地标的方式nextlevel了#&#xff0c;科技与文化的碰撞开启了全新的体验篇…