作业帮 TiDB 7.5.x 使用经验

news2024/9/23 23:34:42

作者: 是我的海 原文来源: 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

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

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

相关文章

26.10 Django Ajax异步提交

1. 表单提交 1.1 表单的作用 表单是Web开发中常见的数据收集方式, 它允许用户通过表单输入数据, 并通过提交操作将这些数据发送到服务器进行处理.表单提交方式主要分为两大类: 传统的同步提交(也称为标准提交)和异步提交(主要通过Ajax实现). 它们在工作方式, 用户体验和数据传…

语音助手Verbi:科技创新的未来

今天&#xff0c;我要向大家介绍一个名为Verbi的语音助手项目。这是一个结合了多种先进技术的模块化语音助手应用程序&#xff0c;能够实现语音到文本、文本生成和文本到语音的全流程处理。通过这个项目&#xff0c;我们可以体验到尖端科技如何改变我们的日常生活。 Verbi的诞…

PHP安全开发

安全开发 PHP 基础 增&#xff1a;insert into 表名(列名 1, 列名 2) value(‘列 1 值 1’, ‘列 2 值 2’); 删&#xff1a;delete from 表名 where 列名 ‘条件’; 改&#xff1a;update 表名 set 列名 数据 where 列名 ‘条件’; 查&#xff1a;select * from 表名 wher…

【STM32 Blue Pill编程】-外部中断配置及使用

外部中断配置及使用 文章目录 外部中断配置及使用1、中断介绍2、STM32中的中断3、硬件准备及接线4、GPIO配置5、代码实现在本文中,我们将介绍如何使用 STM32Cube IDE 中的 HAL 库配置和处理外部中断。 我们将通过一个带有按钮和 LED 的示例来演示这一点。 读完本文后,您将能够…

简单了解JVM执行Java程序的基本流程 | 一次编译,到处运行

前言&#xff1a; Java代码怎么做到一次编译&#xff0c;到处运行的呢&#xff1f;靠JVM&#xff0c;那JVM的执行流程是什么呢&#xff1f; 简单来说&#xff1a;通过Javac编译器将Java源代码编译成字节码&#xff0c;JVM通过类加载器将字节码加载到运行时数据区中&#xff0c;…

C++学习笔记之数据结构

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、二叉树1.1 二叉树的遍历1.1.1 深度优先搜索&#xff08;DFS&#xff09;1.1.2 广度优先搜索&#xff08;BFS&#xff09; 1.2 对称性&#xff08;递归法&#x…

【论文笔记】LION: Linear Group RNN for 3D Object Detection in Point Clouds

原文链接&#xff1a;https://arxiv.org/abs/2407.18232 简介&#xff1a;Transformer在3D点云感知任务中有二次复杂度&#xff0c;难以进行长距离关系建模。线性RNN则计算复杂度较低&#xff0c;适合进行长距离关系建模。本文提出基于窗口的网络线性组RNN&#xff08;即对分组…

Android 上下滑隐藏显示状态栏

一、DisplayPolicy类中监听滑动事件&#xff0c;然后发送广播事件 Android12类路径&#xff1a; frameworks/base/services/core/java/com/android/server/wm/DisplayPolicy.javamSystemGestures new SystemGesturesPointerEventListener(mUiContext, mHandler,new SystemGest…

《机器学习》周志华-CH1(绪论)

1.1引言 机器学习&#xff08;Matchine-Learning&#xff09;所研究的主要内容是关于在计算机上从数据中产生“模型”&#xff08;model&#xff09;的算法&#xff0c;即“学习算法”&#xff08;learning algorithm&#xff09;。可以说机器学习&#xff08;Matchine-Learni…

2024最新最全面一线大厂面试Tips丨接口测试面试题

面试Tips# 面试是求职过程中至关重要的环节。在如今竞争激烈的就业市场&#xff0c;拥有优秀的面试技巧和良好的面试礼仪显得尤为重要&#xff0c;同样掌握这个的行业面试题也不可或缺。 01 你们公司的接口测试流程 是怎样的&#xff1f; &#xff08;有没有感觉熟悉&#…

[Linux][OS][信号的捕捉] 可重入函数 | volatile | SIGCHLD信号

回顾&#xff1a;[Linux][OS][信号的保存和处理] 信号捕捉 1.sigaction int sigaction(int signo, const struct sigaction *act, struct sigaction *oact); 参数&#xff1a; signo&#xff1a;指定信号的编号act&#xff1a;输入型参数&#xff0c;根据act修改该信号的处…

水果甜度个人手持设备检测-(题外:为啥会选型这个课题)

系列:水果甜度个人手持设备检测 -- 题外&#xff1a;为啥会选型这个课题 写在前面的话 这段时间一直也在思考&#xff0c;在主业之外哪些方向和产业成熟度较高、技术复杂度又不是很离谱&#xff0c;比较容易出成果的方向&#xff0c;能够有空去试着做一做。这几年AI智能化正…

Java方法02:方法的定义和调用

本节内容视频链接&#xff1a;Java方法03&#xff1a;方法的重载_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV12J41137hu?p47&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 在Java中&#xff0c;‌‌方法的定义是创建一段可重复使用的代码块的过程‌。‌它…

Java 开发者 LLM 实战:利用 LangChain4j 打造高效本地 RAG 系统

1、引言 由于目前比较火的chatGPT是预训练模型&#xff0c;而训练一个大模型是需要较长时间&#xff08;参数越多学习时间越长&#xff0c;保守估计一般是几个月&#xff0c;不差钱的可以多用点GPU缩短这个时间&#xff09;&#xff0c;这就导致了它所学习的知识不会是最新的&…

代码随想录DAY17 - 二叉树 - 08/16

最大二叉树 题干 题目&#xff1a;给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建&#xff1a; 创建一个根节点&#xff0c;其值为 nums 中的最大值。 递归地在最大值 左边 的 子数组前缀上 构建左子树。 递归地在最大值 右边 的 子数组…

Linux下载卸载MySql

一. 安装Mysql 1.下载mysql --- 密钥 rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 rpm -ivh http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm yum -y --enablerepomysql57-community install mysql-community-server 2.启动mysql sy…

如何选择最佳智能排班系统?9款工具全解析

本文介绍的自助排班管理工具有Moka、红圈排班、工作易排班、泛微e-office、Udesk、畅捷通T、Zenefits、Homebase、Deputy。 在管理团队时&#xff0c;手动排班不仅耗时&#xff0c;还容易出错&#xff0c;影响工作效率&#xff0c;相信很多管理者也有同样的困扰。为了解决这个痛…

【Spring Boot】定时任务

目录 前言 定时任务注解Scheduled 设计一个定时任务 1.启用定时任务 2.创建定时任务 Cron 表达式详解 多线程定时任务 总结 定时任务框架xxl-job SpringBoot继承定时任务框架 1.搭建调度中心xxl-job-admin 1.1下载项目 1.2修改配置文件端口和数据库代码 1.3连接到…

Linux进程间通信学习记录(无名管道)

0.Linux进程间通信的方式 &#xff08;1&#xff09;.从UNIX继承过来的通信方式 无名管道&#xff08;pipe&#xff09; 有名管道&#xff08;fifo&#xff09; 信号&#xff08;signal&#xff09; &#xff08;2&#xff09;.System V IPC 共享内存 消息队列 信号灯集 &am…

Java方法03:方法的重载

本节内容视频链接&#xff1a;https://www.bilibili.com/video/BV12J41137hu?p47&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5https://www.bilibili.com/video/BV12J41137hu?p47&vd_sourceb5775c3a4ea16a5306db9c7c1c1486b5 在Java中&#xff0c;‌方法的重载&#x…