一个好的问题描述有利于社区小伙伴更快帮你定位到问题,高效解决你的问题
【TiDB 使用环境】测试环境
【TiDB 版本】8.5.1
【集群节点数】2个tidb3个tikv3个pd共六台服务器
【遇到的问题:问题现象及影响】
数据库表大表清理后,占用的空间不减少,通过SELECT * FROM mysql.tidb WHERE variable_name IN (‘tikv_gc_safe_point’, ‘tikv_gc_last_run_time’);查询结果正常,如下图:
,而通过tiup ctl:v8.5.1 pd -u
http://192.168.181.57:2379 service-gc-safepoint show命令,查询的"gc_safe_point": 450204182675718148停留在2024-06-03 13:31:04.626 +0800 CST,不正常
,但是没找到如何推进gc_safe_point,也没找到问题所在,还请老师能提供下查询方法及解决思路
1 个赞
随缘天空
(Ti D Ber Ivw R7o Pj)
2026 年2 月 2 日 03:09
5
清理方式是啥,truncate table语法还是delete from 语法?前者默认10min后释放空间,后者较慢,会等 region compaction之后才释放空间
1 个赞
TiDB 清理数据后空间不减少,本质是其延迟回收的存储机制 导致的,核心原因可以拆解为 GC(垃圾回收)未正常推进 和 TiKV Compaction(文件合并)未及时回收空间 两大阶段问题
1 个赞
zhanggame1
(Ti D Ber G I13ecx U)
2026 年2 月 2 日 06:14
7
你太着急了,tikv清理空间默认情况下都是需要几天的。过3天你再看看吧
1 个赞
手动触发 Compaction(低峰期执行,避免 IO 飙升)
1 个赞
我按照这个把cdc删除了, “gc_safe_point”: 450204182675718148,这个时间还是没推进,[tidb@test4 ~]$ curl http://192.168.180.58:2379/pd/api/v1/gc/safepoint
{
“service_gc_safe_points”: [
{
“service_id”: “gc_worker”,
“expired_at”: 9223372036854775807,
“safe_point”: 464002041091194880
}
],
“min_service_gc_safe_point”: 464002041091194880,
“gc_safe_point”: 450204182675718148
},safe_point和 min_service_gc_safe_point是正常的
1 个赞
lllzd
(时光旅行者)
2026 年2 月 2 日 13:34
13
是不是TiDB的垃圾回收GC停止了?导致已经删除的数据的物理空间无法释放?
1 个赞
– 查看 DDL 任务进度
SELECT job_id, db_name, table_name, job_type, state, create_time, start_time, end_time
FROM INFORMATION_SCHEMA.TIDB_DDL_JOBS
WHERE state = ‘running’
ORDER BY create_time DESC;
1 个赞
独善其身
(Ti D Ber Bi Rqfz5 K)
2026 年2 月 3 日 02:36
16
GC程序运行是不是定时执行的,当然也可以手动执行.
TiDBer_SSUU
(Ti D Ber Ssu Uw M5d)
2026 年2 月 3 日 07:28
18
搜一下 tidb 日志里面有没有关键词 “GC will be skipped”、“gc safepoint blocked by a running session”
Kongdom
(Kongdom)
2026 年2 月 3 日 12:41
19
不一定是cdc的问题,原文中写的是,他对比发现是cdc的safepoint不一致,所以删除了cdc的safepoint。你这边要对比看看本地是哪个不一致,然后删除对应的试试。