没有找到类似于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 时对空间重新利用。
空间的回收操作依赖于 tidb 本身的GC 机制了…
tidb是 GC机制
delete就好,用navicat截取会更快
2种数据库底层存储实现不一样,没有那种块高水位的说法,但同样有类似问题,delete后的数据并不能马上释放空间,需要等待GC,GC 也仅仅是打个删除标记,在底层rocksdb 标记为tombstone,等待compact后释放空间。tikv有优化一个gc in compaction filter ,在compact时主动GC后删除数据释放空间,还有就是region上有阈值设置当删除达到一定数量后也会触发region compact
tidb有gc
tidb 也是 堆叠的方式
有的,delete删除后硬盘空间占用不会释放,truncate和drop会释放
半路出家的DBA表示没听过高水位,特意去搜了一下。但是感觉和删除操作没有太大关系吧
MySQL数据库高水位是指数据库中的数据量达到了预设的最大值,导致数据库性能下降的问题。当MySQL数据库中的数据量逐渐增加时,数据库中的索引和数据文件会变得越来越大。如果预设的最大值达到,就会出现高水位现象。这将导致MySQL数据库的性能下降,并可能导致数据丢失。
在MySQL数据库中,数据是以页(Page)为单位进行存储的。每个页的大小通常为16KB。当数据被插入或更新时,MySQL存储引擎会将数据写入到页中的空闲空间。如果一个页被写满了,存储引擎会申请一个新的页来存储数据,并将高水位提升到新页的位置。
高水位并不是一个明确的位置,而是一个表示当前数据文件中已使用空间的指示器。当高水位上升时,数据文件中的空闲空间减少,导致磁盘空间的浪费。
水位是指表只能增大不能变小,即使数据全部delete了
受教了,以前确实没听过这个说法
叫法不一,大概都差不多
delete不会释放
这个可以
此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。