tidb数据库delete数据,存在mysql那样高水位的问题吗

没有找到类似于mysql数据库alter table xx engine=innodb;重建表,回收空间这样的操作

直接delete即可,等GC时会自动回收并compaction释放空间的,无需rebuild

默认gc time为10分钟,delete后根据mvcc机制保存多版本 gc事件后合并删除释放空间

DELETE,TRUNCATE 和 DROP 都不会立即释放空间。对于 TRUNCATE 和 DROP 操作,在达到 TiDB 的 GC (garbage collection) 时间后(默认 10 分钟),TiDB 的 GC 机制会删除数据并释放空间。对于 DELETE 操作 TiDB 的 GC 机制会删除数据,但不会释放空间,而是当后续数据写入 RocksDB 且进行 compact 时对空间重新利用。

2 个赞

空间的回收操作依赖于 tidb 本身的GC 机制了…

tidb是 GC机制

不会的,https://docs.pingcap.com/zh/tidb/stable/garbage-collection-overview#gc-机制简介

delete就好,用navicat截取会更快

2种数据库底层存储实现不一样,没有那种块高水位的说法,但同样有类似问题,delete后的数据并不能马上释放空间,需要等待GC,GC 也仅仅是打个删除标记,在底层rocksdb 标记为tombstone,等待compact后释放空间。tikv有优化一个gc in compaction filter ,在compact时主动GC后删除数据释放空间,还有就是region上有阈值设置当删除达到一定数量后也会触发region compact

1 个赞

tidb有gc

tidb 也是 堆叠的方式

有的,delete删除后硬盘空间占用不会释放,truncate和drop会释放

半路出家的DBA表示没听过高水位,特意去搜了一下。但是感觉和删除操作没有太大关系吧 :joy:

MySQL数据库高水位是指数据库中的数据量达到了预设的最大值,导致数据库性能下降的问题。当MySQL数据库中的数据量逐渐增加时,数据库中的索引和数据文件会变得越来越大。如果预设的最大值达到,就会出现高水位现象。这将导致MySQL数据库的性能下降,并可能导致数据丢失。

在MySQL数据库中,数据是以页(Page)为单位进行存储的。每个页的大小通常为16KB。当数据被插入或更新时,MySQL存储引擎会将数据写入到页中的空闲空间。如果一个页被写满了,存储引擎会申请一个新的页来存储数据,并将高水位提升到新页的位置。

高水位并不是一个明确的位置,而是一个表示当前数据文件中已使用空间的指示器。当高水位上升时,数据文件中的空闲空间减少,导致磁盘空间的浪费。

水位是指表只能增大不能变小,即使数据全部delete了

:+1:受教了,以前确实没听过这个说法

叫法不一,大概都差不多

delete不会释放

这个可以

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。