and*_*s78 5 java size blob hsqldb
我在Java中使用HSQLDB数据库,它将文件存储在定义为BLOB的列中.
当我将带有文件/ BLOB的表行添加到我的表时,.lobs文件的大小增加了文件/ BLOB.当我将另一个文件添加到我的表时,它再次增加大小(2 x BLOB大小).
所以,我实现了一个迭代10次的测试方法,并将相同的文件写入我的表并在插入后立即删除它.
现在,我的.lobs文件是10 x文件大小...即使我删除了包含该文件的所有表行.
我试图执行CHECKPOINT DEFRAG,但没有任何反应..lobs文件保持相同的文件大小.
这让我很担心,因为我正在创建的webapp会将大量文件写入我的数据库,即使带有文件的表行(BLOB)将在一段时间后被删除,.lobs文件将始终增加或保持不变大小,最终吃掉我所有的磁盘空间.
我错过了一些设置还是这是HSQLDB和BLOB的预期行为?
非常感谢!
亲切的问候,安德烈亚斯
这个是正常的。
所有删除的 lob 空间都会被记录。在 CHECKPOINT 之后,如果插入新的 lob,这些空格将被重复使用。
在生产数据库中,存在插入和删除的重复周期。在日志运行中,.lobs 文件大小不会超过数据库中 lob 的实际大小很大。
更新:
.lobs 文件一直增长到检查点的原因是为了在系统崩溃时允许数据恢复。
如果删除 lob 后文件末尾有空格,HSQLDB 版本 2.3.0 及更高版本会在 CHECKPOINT 处截断 .lobs 文件。
| 归档时间: |
|
| 查看次数: |
2444 次 |
| 最近记录: |