gpt4 book ai didi

java - Truncate 不会物理释放磁盘空间

转载 作者:行者123 更新时间:2023-11-29 12:26:53 26 4
gpt4 key购买 nike

我将 spring-dataCrudRepository 一起用于任何数据库访问。每天一次,我还必须截断包含大约 100GB 数据的缓存表并重建它。

问题:表被成功截断(我验证表是空的),但是文件并没有从数据库的硬盘驱动器中物理删除!

interface MyTableRepository extends CrudRepository<MyTableEntity, Long> {
@Query(value = "TRUNCATE TABLE my_table", nativeQuery = true)
@Modifying
@Transactional
void truncateTable();
}

因此,硬盘空间一天比一天少。我注意到:如果我关闭我的 Java 应用程序,postgres 表的 truncated 部分会立即被删除!

这可能是什么原因?

当我使用 pgAdmin 截断同一个表时,磁盘空间按预期释放。

最佳答案

有两个可能的原因

  1. PostgresSQL 会在 vacuum 之后删除这个索引文件。所以等待或自己吸尘

  2. 在您退出此 java 程序之前不会提交 SQL

关于java - Truncate 不会物理释放磁盘空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30273943/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com