gpt4 book ai didi

sql - 删除 LOB 不会减少 Hibernate H2 DB 大小

转载 作者:行者123 更新时间:2023-12-04 12:39:30 26 4
gpt4 key购买 nike

我正在使用 H2 1.4.196。我有一个包含 LOB 的有效负载表。我通过 Java 程序触发删除表中的实体,并通过 H2 控制台验证该表现在为空。

但是,db.mv 文件的大小不会减小。重复创建和删除 LOB 使表为空,但 db.mv 继续无限增长,查看文件我仍然看到 LOB 内容。只有在 DROP TABLE Payload 时 db.mv 文件的大小才会真正减小。

我有一个理论,它可能是一个开放的交易,但是 SELECT * FROM INFORMATION_SCHEMA.SESSIONS只显示 session sql 语句创建的 session 。

是什么导致无法真正删除 LOB?

最佳答案

更新:我找到了 https://github.com/h2database/h2database/issues/681 ,并从源代码构建以包含 11 月 29 日的提交导致 DB 文件成功减少。但是,删除需要大约 20 秒才能传播并反射(reflect)在文件大小中,并且在此时间范围内插入导致删除永远不会完成。

类似问题已存在多年:https://groups.google.com/forum/#!topic/h2-database/CGXOfSx_Vq4

根据 http://h2database.com/html/features.html#compacting , “数据库文件中的空白空间会自动重新使用。关闭数据库时,数据库默认自动压缩最多 200 毫秒。”还没有真正看到我们的 LOB 会出现这种情况,因为数据库在其余任务的每次迭代中都会增长。

它建议使用手册 SHUTDOWN COMPACT作为压缩更多的解决方法

https://groups.google.com/forum/#!topic/h2-database/eXBzpF4WnNk :“请注意,如果您删除数据(但保持数据库打开),数据库文件不会缩小。但是,文件中的空白空间会自动重新使用。如果您关闭数据库(关闭所有连接或运行“关闭”),数据库文件只会缩小。”

关于sql - 删除 LOB 不会减少 Hibernate H2 DB 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48069071/

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