我的H2数据库已经膨胀到几千兆字节,导致各种操作问题。数据库大小似乎不对。所以我只拿了一小块,只有一张桌子,试图弄清楚发生了什么。
我将此表带入测试环境:
根据我的计算,每行最多可添加80个字节。
该表有280,000行。
对于此测试,删除了所有索引。
该表应占据约
80 bytes per row * 280,000 rows = 22.4 MB on disk.
然而,它实际上占用 157 MB 。
我希望在这里和那里看到一些开销,但是为什么这个数据库比合理估计的数据量大7倍?
更新
答案 0 :(得分:-1)
总是需要考虑索引等。
你可以尝试:
CALL DISK_SPACE_USED('my_table');
此外,我还建议您运行SHUTDOWN DEFRAG
并再次计算尺寸。
答案 1 :(得分:-1)
在数据库创建上设置MV_STORE=FALSE
可以解决问题。整个数据库(不是示例中的测试切片)现在大约小10倍。
<强>更新强>
我最近不得不重新审视这个话题,不得不与MySQL进行比较。在我的测试数据集中,当MV_STORE = FALSE时,H2数据库占用360MB的磁盘空间,而具有默认配置的MySQL 5.7 InnoDB上的相同数据占用432MB。 YMMV。