重复删除和加载相同数据后,H2 db 大小持续增加

Posted

技术标签:

【中文标题】重复删除和加载相同数据后,H2 db 大小持续增加【英文标题】:Continuous Increase in H2 db size after dropping and loading same data repeatedly 【发布时间】:2013-07-05 12:28:41 【问题描述】:

我有一个名为 temp.h2.db 的 H2 数据库,由两个应用程序访问。第一个通过嵌入式模式访问它,第二个通过服务器模式访问它。通过第二个应用程序,我将数据加载到数据库中。但即使我删除以前的值并重复加载相同的数据,数据库大小也会增加。从大约 200mb 增加到大约 2Gb。即使我删除所有表并加载一组新数据(与前一组数据的大小几乎相同),也会发生这种情况。这是一个错误吗?

我试过LOG_SIZE_LIMIT=32,但没有用。

这可能是由于未结交易造成的吗?我们如何确定存在哪些未结交易?我对数据库进行了两次恢复,它给了我一些统计数据。我如何解释这些:

---- Statistics ----
-- page count: 954655, free: 776787
-- page data bytes: head 13860963, empty 26006602, rows 35134291 (66% full)
-- free 91%, 876991 page(s)
-- data leaf 3%, 36622 page(s)
-- data node 0%, 268 page(s)
-- btree leaf 3%, 36567 page(s)
-- btree node 0%, 570 page(s)
-- free list 0%, 52 page(s)
-- stream trunk 0%, 8 page(s)
-- stream data 0%, 3574 page(s)

下一组是:

---- Statistics ----
-- page count: 235708, free: 164636
-- page data bytes: head 13268512, empty 24936708, rows 33759452 (66% full)
-- free 67%, 159364 page(s)
-- data leaf 14%, 35139 page(s)
-- data node 0%, 267 page(s)
-- btree leaf 14%, 35338 page(s)
-- btree node 0%, 568 page(s)
-- free list 0%, 15 page(s)
-- stream trunk 0%, 9 page(s)
-- stream data 2%, 5005 page(s)

MAX_COMPACT_TIME 有什么帮助吗?在这里请求您的帮助。谢谢。

【问题讨论】:

你把问题分类了吗?更重要的是,你找到删除行后文件大小总是增加的原因了吗? 是的..我们通过将整个数据转换为ddl和dml命令到一个sql文件然后执行这个文件来解决问题。通过这种方式,我们可以取回所有数据,但大小会减小。 【参考方案1】:

见https://github.com/h2database/h2database/issues/301。 这是一种已知行为,旨在以增加磁盘使用量为代价实现更快的写入。

【讨论】:

以上是关于重复删除和加载相同数据后,H2 db 大小持续增加的主要内容,如果未能解决你的问题,请参考以下文章

DB2 for LinuxUNIX and Windows 中重复数据删除设备的完整支持

H2数据库加载csv数据更快

Spring Boot 从类路径加载 H2 db 文件

即使在更新设置中的字体大小后,VS Code字体大小仍然相同[重复]

Spring H2 Test DB 在每次测试之前不会重置

python pandas删除重复的列