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

作业帮 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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 梧桐数据库(WuTongDB):聊聊抽象语法树(Abstract Syntax Tree, AST)技术
  • P4727 [HNOI2009] 图的同构计数
  • OpenLayers 使用高德地图并绘制一些线,并用Android原生触发
  • ZK Rollup 的Sequencer
  • STM32通过I2C硬件读写MPU6050
  • Microsoft GraphRAG 执行流程
  • 【计算机硬件硬盘与储存设备】
  • 推荐一款开源特效制作软件(适用于Godot)
  • tcpdump入门——每种flag分别表示什么意思
  • ECMAScript6语法:默认参数和rest参数
  • 模型训练坎坷路--逐步提升模型准确率从40%到90%+
  • redis命令学习
  • 构建Docker镜像时,遇到从`deb.debian.org`下载软件包速度很慢
  • [论文笔记]ZeRO: Memory Optimizations Toward Training Trillion Parameter Models
  • 软考:软件设计师 — 13.数据结构
  • Angular js 常用指令ng-if、ng-class、ng-option、ng-value、ng-click是如何使用的?
  • C++入门教程(10):for 语句
  • CentOS从零开始部署Nodejs项目
  • el-input获取焦点 input输入框为空时高亮 el-input值非法时
  • es6(二):字符串的扩展
  • extract-text-webpack-plugin用法
  • leetcode98. Validate Binary Search Tree
  • python_bomb----数据类型总结
  • python大佬养成计划----difflib模块
  • React-生命周期杂记
  • Spark学习笔记之相关记录
  • vue2.0项目引入element-ui
  • 构建二叉树进行数值数组的去重及优化
  • 前端之Sass/Scss实战笔记
  • 使用 QuickBI 搭建酷炫可视化分析
  • 移动端 h5开发相关内容总结(三)
  • 中文输入法与React文本输入框的问题与解决方案
  • ​2021半年盘点,不想你错过的重磅新书
  • ​LeetCode解法汇总2808. 使循环数组所有元素相等的最少秒数
  • !!Dom4j 学习笔记
  • #include
  • #Linux(权限管理)
  • #pragam once 和 #ifndef 预编译头
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • (2)nginx 安装、启停
  • (42)STM32——LCD显示屏实验笔记
  • (floyd+补集) poj 3275
  • (ZT)薛涌:谈贫说富
  • (搬运以学习)flask 上下文的实现
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (黑马C++)L06 重载与继承
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (十五)devops持续集成开发——jenkins流水线构建策略配置及触发器的使用
  • (转)我也是一只IT小小鸟
  • *p++,*(p++),*++p,(*p)++区别?
  • *算法训练(leetcode)第三十九天 | 115. 不同的子序列、583. 两个字符串的删除操作、72. 编辑距离
  • .htaccess配置常用技巧
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes