hibernate 为什么H2数据库文件大小的增长超过了数据大小

e4yzc0pl  于 2022-11-14  发布在  其他
关注(0)|答案(2)|浏览(198)

我有一个H2数据库文件,文件大小已增长到5 GB。我已经删除了一些数据以减小文件的大小。但是,即使从数据库中删除了一半的记录,文件大小仍然保持不变。
我已经尝试了以下所有方法来减少数据库大小,但没有一个对我有效。

1. Executed shutdown compact (after closing all the connection).
2. Executed shutdown defrag.
3. Executed checkpoint.
4. Used the property MV_STORE=FALSE along with the database url.
5. Used the property RETENTION_TIME=30000 along with the database url.

我的连接字符串如下所示:

"jdbc:h2:" + <db file path>;MVCC=TRUE;DEFAULT_LOCK_TIMEOUT=10000;COMPRESS=TRUE;

注:
1.我们正在结束我们打开的交易。
1.文件中没有5 GB的数据。
有人能给我建议一些解决办法或修复方法来减小我的数据库大小吗?

6mw9ycah

6mw9ycah1#

因为当你从数据库中删除一些记录时,数据文件不会减少。这是由于性能原因造成的。因此,h2将替换文件中的字节块或追加新的字节块,但不会删除任何内容,因为这将需要重写整个文件。
要么您没有像您认为的那样压缩,要么您没有删除有意义的(数量)数据。

wkftcu5l

wkftcu5l2#

通常情况下,文件大小比数据大小大得多,因为其中保存了多个版本的数据,以适应并发事务处理。
假设你使用的是最新版本,可以使用“Shutdown deFrag”或“Shutdown Compact”(它们现在是一样的)来减小文件大小。
这是将文件大小降低到数据大小(大致)的唯一方法。升级,如果它是1.4.197或更早的版本。
你的行为对我来说毫无意义。如果有什么不同的话,那就是保留时间=0。

相关问题