HSQLDB和.lobs文件大小
我在Java中使用HSQLDB数据库,它将文件存储在定义为BLOB的列中。
当我将一个带有文件/ BLOB的表行添加到我的表时,.lobs文件的大小增加了文件/ BLOB。 当我向我的表添加另一个文件时,它再次增加大小(2 x BLOB大小)。
所以,我实现了一个迭代10次的测试方法,并将相同的文件写入我的表并在插入后立即删除它。
现在,我的.lobs文件是10 x文件大小…即使我删除了包含该文件的所有表行。
我试图执行CHECKPOINT DEFRAG,但没有任何反应。 .lobs文件保持相同的文件大小。
这让我很担心,因为我正在创建的webapp会将大量文件写入我的数据库,即使带有文件(BLOB)的表行将在一段时间后被删除,.lobs文件将始终增加或保持不变大小,最终吃掉我所有的磁盘空间。
我错过了一些设置还是这是HSQLDB和BLOB的预期行为?
非常感谢!
亲切的问候,安德烈亚斯
这个是正常的。
记录所有删除的lob空间。 在CHECKPOINT之后,如果插入新的凸起,则重复使用这些空格。
在生产数据库中,存在重复的插入和删除循环。 在日志运行中,.lobs文件大小不会超过数据库中lob的实际大小。
更新:
.lobs文件增长的原因直到检查点允许数据恢复,以防系统崩溃。
如果在删除lobs后文件末尾有空格,则HSQLDB版本2.3.0及更高版本会截断CHECKPOINT处的.lobs文件。
- 从Java保存MySQL中的图像
- Hibernate – 插入大blob的内存不足
- Java文件上传到MySQL
- 在cassandra中将json存储为文本vs blob的优缺点是什么?
- 从数据库中读取BLOB(PDF内容)并编辑和输出PDF编辑的文件,而无需创建物理文件
- 在Spring MVC中将图像上传到服务器并在mysql数据库中存储引用
- 用于从Java中的blob内容创建文件的代码段
- 如何在不将完整文件加载到内存的情况下将大文件插入BLOB(Oracle)?
- java.lang.AbstractMethodError:com.mysql.jdbc.PreparedStatement.setBlob(ILjava / io / InputStream;)V