当我删除行时,这些行只被标记为要删除,新数据可以保存在那里,但是可以强制释放内存吗?怎么样?
答案 0 :(得分:1)
首先,我认为它确实是你所担心的磁盘空间而不是内存。已删除行使用的内存只是页面图像的一部分(如果行大小足够,则为多个页面图像)。
其次,没有办法释放与该行关联的磁盘空间。分配给块的所有磁盘空间仍在使用中。它在创建行之前正在使用,并在删除行后继续使用。 Informix处理分配。
关注点是什么?由于删除了行,您不会在Informix内部或o / s级别用完空间。
答案 1 :(得分:1)
根据您的Informix版本,您可以使用SQL管理API命令 用于存储优化并合并表中的可用空间。
在线或离线使用重新打包操作,并对分区范围进行缩小或碎片整理。
V11.50或以上
•重新打包将行从分区末尾移动到分区上端的空页空间。
•将已清空的扩展区缩小回dbspace。
V12.10
•对表或索引进行碎片整理以合并不连续的扩展区。
见:
管理员指南管理磁盘空间章节
管理员参考SQL管理API函数
答案 2 :(得分:0)
如果要回收已删除行占用的存储空间,可以卸载表,删除表,重新创建表,将卸载的行加载到刚刚重新创建的空新表中,重新创建索引,并更新表的统计信息。请注意,这也将优化表格以提高性能。