2

除了使用文本编辑器物理删除行末尾的 \0 之外?

4

1 回答 1

3

这取决于 Informix SQL 背后的数据服务器。

如果数据服务器是 SE(标准引擎),并且风向对您有利(特别是,如果先前分配给现在已删除行的空间尚未用于其他任何事情),那么您可以修改.dat文件将“死行”标记('\0'在 C 中)更改为“活动行”标记('\n'在 C 中)。然后,您需要使用bcheckor secheck(取决于 Informix SE 的版本)检查表上的索引。这依赖于一些关于 C-ISAM 数据文件的内部知识。

如果数据服务器是 IDS(Informix 动态服务器,现在又称为 Informix),那么答案基本上是“不”。当然,“未重复使用的空间”警告适用。但是,没有像 C-ISAM (SE) 中那样简单的行结束标记,也没有一种简单的方法可以准确地找到已删除数据的存储位置,并且存在将行拆分为多个页面的问题足够大的行大小(大于 4 KiB;在大多数系统上,大于 2 KiB)等。因此,基本上,答案是否定的。

于 2012-04-20T09:56:41.310 回答