我有一个应用程序,它的 HSQL 数据库对于某些用户来说变得非常大,但对其他用户则不然。当我收到一个发生这个问题的例子时,我发现数据库几乎是空的——它几乎是 16GB 的零,只有几十兆字节的真实数据。在执行CHECKPOINT DEFRAG
时,它会缩小到真实的小尺寸。
不幸的是,我对这个数据库引擎不是很熟悉,而且我的在线搜索也没有产生什么有用的信息。一件有趣的事情是,有一个选项可以在达到一定大小时自动执行碎片整理,我没有使用过。但是,我希望数据库重用死行而不是保留它们,并且绝对不会将其清零,因为这肯定会对性能产生不良影响。
为什么数据库不断产生如此多的空白空间,这些空间只是被零散的数据打断?我怎样才能知道发生了什么?