作业帮 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
相关文章:

作业帮 TiDB 7.5.x 使用经验
作者: 是我的海 原文来源: https://tidb.net/blog/5f9784d3 近期在使用 TiDB 时遇到的一些小问题的梳理总结,大部分版本都在6.5.6和7.5.2 1、limit 导致的扫描量过大的优化 研发定时任务每天需要扫描大量数据,到时机器网卡被…...

c语言练习题1
1.输出Helloword /*输出Helloword*/ #include<stdio.h> int main() {printf("Hello word!");return 0; }2.整型变量的定义与使用 /*整型变量的定义与使用*/ #include <stdio.h> int main() {int a;int b;a 10;b 20;int c a b;int d a - b;printf(…...

嵌入式开发就业方向有哪些?前景未来可期!
在科技日新月异的今天,嵌入式系统几乎渗透到了我们生活的各个角落。从简单的家用电器到复杂的工业自动化设备,再到我们手中的智能手机,无一不体现出嵌入式技术的魅力。因此,嵌入式领域的就业前景广阔,为众多求职者提供…...

系列:水果甜度个人手持设备检测-github等开源库和方案
系列:水果甜度个人手持设备检测 -- github等开源库和方案 概述 通常来说,年纪轻轻的我们一般都喜欢走捷径,对于智能设备和算法软件领域来说,GitHub应该算为数不多的的捷径之一。就算因为效果不好/知识产权/方向不同等原因不用,…...
Visual Studio中 生成版本号
Visual Stuodio WPF项目 自动生成版本号 生成递增版本号 软件版本号主要标识了软件的版本,通过其可以了解软件、类库文件的当前版本,使得软件版本控制有所依据。 我们也可以在项目属性上可以看到相关设置的界面,对应的英文名称分别为&#…...

AI入门指南(四):分类问题、回归问题、监督、半监督、无监督学习是什么?
文章目录 一、前言二、分类问题、回归问题是什么?分类问题概念常见算法分类问题的实际应用:银行贷款审批案例 回归问题概念常见算法回归问题实际应用:线性回归模型预测房价 小结 三、监督、半监督、非监督学习是什么?监督学习非监…...
Linux下本地端口转发
在Linux下进行本地端口转发处理,可以进行如下操作: 1.确认NetFilter相关驱动编译到内核,并且CONFIG_IP_NF_TARGET_REDIRECTy; 2.开启转发功能:echo 1 > /proc/sys/net/ipv4/ip_forward; 3.设置转发规…...

RPC 和 HTTP 理解
网上充斥着各类类似于这样的文章:rpc 比 http 快了多少倍?既然有了 http,为什么还要用 rpc 调用等等。遇到这类文章,说明对 http 和 rpc 是由理解误区的。 这里再次重复强调一遍,通信协议不是 rpc 最重要的部分&#x…...
Visual Studio 2022 v17.11 发布
Visual Studio 2022 版本 17.11 正式发布 (GA),此版本主要是基于用户反馈的各项改进。 “每项增强、每项修复和每项新功能均根据你的反馈而制定。无论你是在构建 Web、桌面、云还是游戏应用程序,Visual Studio 2022 v17.11 都旨在让你的开发体验更流畅、…...

通讯专题-RS232
1 概述 RS-232是一种点对点通信协议,这意味着每个数据信号沿一根导线传输(差分信号使用两根导线传输一个数据信号),RS-232为全双工方式运行(总线可同时发送和接收数据)。 根据新修订的标准为容性负载为2500…...

桥接模式详解
桥接模式 概念: 将抽象部分和实现部分分离, 使他们都可以独立的变化 概念很抽象, 难以理解, 我们举个例子 例子 设想三种不同品牌的汽车 大车 中车 小车 三种不同类型的引擎 纯电引擎 混动引擎 燃油引擎 如果我们把他们两两组合, 都继承同一个类的话,就会有9个类, 并且如果后…...

使用一致性哈希解决哈希分片负载均衡的扩展性问题
声明:本文的图全部源于:小林coding 上来咱先说,一致性哈希是应对分布式系统的算法 假设有一个负载均衡问题,也就是大批流量来请求,那怎么分配这些流量? 随机?还是挨个轮询? 这都…...

探索 Resolume Arena 7 - 引领 VJ 音视频创作的卓越软件
Resolume Arena 7 是一款专为 Mac 和 Windows 系统设计的强大 VJ 音视频软件,为创意专业人士和爱好者提供了丰富而出色的功能。 这款软件拥有直观且用户友好的界面,即使对于初学者来说,也能快速上手并开始创作。其强大的媒体管理功能&#x…...

三勾点餐系统|支持多端发布,方便二次开发
版本号1.7更新日志 新增:腾讯地图key设置(更新后请设置key) 新增:支付宝小程序登录和支付 新增:前端点餐时选择门店 新增:前端点餐页面优惠活动显示 新增:H5修改手机号 新增:H…...
深入理解AES加密算法:原理与Python实现
目录 深入理解AES加密算法:原理与Python实现1. AES算法简介2. AES加密解密流程3. Python实现AES加密解密4. 结论 深入理解AES加密算法:原理与Python实现 AES (Advanced Encryption Standard) 是目前最广泛使用的对称加密算法之一。它具有高效、安全和灵…...
Redis中List数据类型常用命令
目录 1. 基本操作 (1)在列表的头部插入一个元素 (2)在列表的尾部插入一个元素 (3)获取列表的长度 (4)获取列表中的元素 2. 读取和修改 (1)获取列表的范围&…...
借助Aapose.Cells 使用 C# 在 Excel 中读取、添加和编辑线程注释
Excel 中的线程注释是协作工作的重要功能。它允许多个用户在共享文档中添加、编辑和查看对话线程。在某些情况下,我们可能需要以编程方式管理这些线程注释。在这篇博文中,我们将学习如何使用 C# 在 Excel 中读取、添加和编辑线程注释。 Aspose.Cells 是…...

关于c++ grpc 和 c# grpc 通信的问题 以及 grpc 认证问题
一、c 和 c# 通信 c# 端服务器 如果域名 输入的是 https ,则 c 端需要匹配使用,也就是c 端需要进行安全认证。如果是http 则c 端不需要认证(基于c#的grpc 未 通信成功) 参考如下网址可以写一个简单的 .net grpc服务器 (…...

C++进阶(14)类型转换、IO流
文章目录 一、类型转换C语言隐式类型转换强制类型转换 C类型转换的情况类型转换的函数(4个) 二、IO流1、缓冲区2、提高输入输出效率3、文件操作文件权限写操作 --- ofstream文本方式写入二进制方式写入 读操作 --- ifstream文本方式读取二进制方式读取 其…...

配置oss cdn加速静态资源访问 阿里云
效果对比 配置cdn下载速度对比 步骤 1: 登录阿里云控制台控制台主页,找到并点击“对象存储 OSS” 创建存储空间(Bucket) 设置权限 步骤 2: 获取外网访问地址 步骤 3 在 CDN 中使用该地址 复制该外网访问地址 打开全站加速 DCDN/域名管理 添…...

深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

Flask RESTful 示例
目录 1. 环境准备2. 安装依赖3. 修改main.py4. 运行应用5. API使用示例获取所有任务获取单个任务创建新任务更新任务删除任务 中文乱码问题: 下面创建一个简单的Flask RESTful API示例。首先,我们需要创建环境,安装必要的依赖,然后…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...

简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...

VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...

深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...

基于当前项目通过npm包形式暴露公共组件
1.package.sjon文件配置 其中xh-flowable就是暴露出去的npm包名 2.创建tpyes文件夹,并新增内容 3.创建package文件夹...
【git】把本地更改提交远程新分支feature_g
创建并切换新分支 git checkout -b feature_g 添加并提交更改 git add . git commit -m “实现图片上传功能” 推送到远程 git push -u origin feature_g...