解压缩数据

可解压缩之前压缩的表和分段。 解压缩表或分段将停用对新的插入和更新操作的压缩、解压缩所有已压缩的行、停用压缩字典,并对不再适合其原始页面的行分配新页面。

可使用 uncompressuncompress_offline 自变量,以联机或脱机方式解压缩。 脱机解压缩操作与解压缩的操作相同,不同之处是该操作在执行时对分段保持互斥锁定,以便在完成操作之前,避免其他对分段数据进行的所有访问。

完成脱机解压缩操作之前删除或禁用索引可以减少服务器完成此操作需要的时间量。之后,可以重新创建或重新启用索引,最好是利用 PDQ。先删除或禁用索引,再重新创建或启用,这种做法比不这样做而直接完成脱机重新打包或脱机解压缩操作的速度更快。

先决条件
  • 您必须可以连接到 sysadmin 数据库(缺省情况下只有用户 gbasedbt 可连接),并且必须是 DBSA。
  • 必须压缩表或分段。
  • 如果希望运行的任何工作负载(包括但不限于 uncompress 或 uncompress_offline 操作)耗用日志文件的速度超过每 30 秒一个文件,请将日志配置为比当前大小更大。

要解压缩表或分段中的数据,请执行以下操作:

运行带 table uncompresstable uncompress_offlinefragment uncompressfragment uncompress_offline 命令自变量的 admin()task() 函数。

为表指定信息,如下所示:

EXECUTE FUNCTION task(“table uncompress”, “table_name”,
“database_name”, “owner_name”);

EXECUTE FUNCTION admin(“table uncompress_offline”, 
“table_name”, “database_name”, “owner_name”);

必须指定表名。数据库和所有者名称可选。 如果不指定数据库或所有者名称,GBase 8s 将使用当前数据库和所有者名称。

为分段指定信息,如下所示:

EXECUTE FUNCTION task(“fragment uncompress”, “partnum_list”);

EXECUTE FUNCTION task(“fragment uncompress_offline”, “partnum_list”);

示例

以下示例显示了这样的一个命令:指示 GBase 8s 解压缩所有者为“mario”的“music”数据库内名为“rock”的表。
EXECUTE FUNCTION task("table uncompress","rock","music","mario");
以下示例显示了这样的一个命令:指示 GBase 8s 以脱机方式解压缩分区号为 14680071 的分段。
EXECUTE FUNCTION task("fragment uncompress_offline," "14680071");

如果已解压缩表,GBase 8s 将把该表的字典标记为不活动。GBase 8s 不会删除字典,因为 Enterprise Replication 函数会将字典用于较旧的日志。可删除不再需要的字典。

您可以取消带 uncompress 自变量的命令,如在 DB-Access 中按 CTRL-C。

之前中断命令之后,可重新发出带 uncompressuncompress_offline 自变量的命令。(压缩、重新打包和解压缩操作将记录,但是在较小的部分中运行。)