IBM Cloud Docs
为时间旅行创建和变更对象

为时间旅行创建和变更对象

概述

要在 NPSaaS上运行时间旅行查询,请通过将 DATA_VERSION_RETENTION_TIME (保留时间间隔) 设置为非零值来创建时间旅行表,模式或数据库 (时间旅行对象)。 要设置 DATA_VERSION_RETENTION_TIME,请对这些对象类型使用 CREATEALTER 命令,或者使用 Web 控制台。 您可以选择 1 天到最多 99 天,或者选择 0 以将临时对象变更为非临时对象。

在为模式或数据库中的所有表设置保留时间间隔之前,请考虑临时表的存储成本,这可能很重要。 请参阅 管理时间旅行空间使用情况

此外,您可以 为系统设置缺省 DATA_VERSION_RETENTION_TIME

时态表通常具有当前行和历史行。 当前行未标记为待删除。 历史行被标记为待删除 (通过 DELETEUPDATEMERGETRUNCATE 语句),并且对时间旅行查询可视,直到指定的保留时间间隔超过其删除时间戳记。

DATA_VERSION_RETENTION_TIME 值为零的表是非时态表。 只有其当前 (未删除) 行对查询可视。 出于增量备份目的,可能会保留某些历史行,但这些行不可用于时间旅行查询。

如果将现有时态表的 DATA_VERSION_RETENTION_TIME 更改为零,那么该表将变为非时态表。 它不再支持使用时间旅行查询访问历史数据。

限制

不会将表,模式和数据库的保留时间间隔更改从主节点复制到副本节点。 它们也不是历史 (已删除) 表行。

表,模式和数据库的保留时间间隔由 nzbackup 命令自动备份并由 nzrestore 命令复原。 不会备份和复原表行的插入和删除时间戳记。 复原的行将在目标数据库或系统中获取全新插入时间戳记,而增量复原所删除的行将在目标数据库或系统中获取全新删除时间戳记。 不期望也不保证目标上行的历史版本数将与源数据库上的历史版本数相匹配。 例如,特定行可能会在源上的备份增量之间多次更新,或者更新然后删除。 此操作将导致在目标上单次删除该行。

如果尝试使用其他 SPU 机柜扩展 NPSaaS 系统,那么该过程会导致丢失历史 (已删除) 行。 将使用全新的插入时间戳记重新分发所有当前行。

下列类型的表不能是时态表:

  • 临时表
  • 外部表
  • 通过添加和/或删除列而变更的版本化表
  • 行安全表。

此限制会影响以下命令:

GROOM TABLE VERSIONS 命令将版本化表转换为非版本化表。 发生这种情况时,可以使用 ALTER TABLE 命令指定非零 DATA_VERSION_RETENTION_TIME

与 watsonx.data 的 DATA_VERSION_RETENTION_TIME 相关的异常

DATA_VERSION_RETENTION_TIME 相关的 watsonx.data 存在异常。 下表涵盖 watsonx.data的数据库,模式和表的 DATA_VERSION_RETENTION_TIME 属性的行为。

行为和例外
行为 异常
CREATE DATABASE with DATA_VERSION_RETENTION_TIME for watsonx.data 不允许
对于 watsonx.data,带有 DATA_VERSION_RETENTION_TIME 的 ALTER DATABASE 不允许
使用 DATA_VERSION_RETENTION_TIME 为 watsonx.data 创建模式 不允许
针对 watsonx.data 的带有 DATA_VERSION_RETENTION_TIME 的 ALTER SCHEMA 除 NETEZZA_SCHEMA 外,不允许
具有 DATA_VERSION_RETENTION_TIME (时态) 表的 CREATE TABLE 仅在 NETEZZA_SCHEMA 下允许
带有 DATA_VERSION_RETENTION_TIME (时态) 表的 ALTER TABLE 仅在 NETEZZA_SCHEMA 下允许

如果 SYSTEM DEFAULT DATA_VERSION_RETENTION_TIME 非零,那么 CREATE DATABASE 将不会继承 SYSTEM DEFAULT 中的属性。 包含 NETEZZA_SCHEMA 的 CREATE SCHEMA 将不会继承 DB 属性。 对于 watsonx.data,与时间旅行相关的自动执行任务将不需要任何影响或更改。

使用命令行创建时间旅行对象

使用命令行创建时态表

要创建时态表,请将 DATA_VERSION_RETENTION_TIME 设置为非零值。

有关详细语法和特权,请参阅 CREATE TABLE 命令

CREATE TABLE <tablename> ( <col>[, <col>… ] ) DATA_VERSION_RETENTION_TIME <number-of-days>;

示例:

CREATE TABLE PRODUCT (prodid int, proddesc char(100)) DATA_VERSION_RETENTION_TIME 30;

将行插入到表中时,该行将接收到等于插入事务的落实时间的虚拟插入时间戳记。

从表中删除行时,该行接收的虚拟删除时间戳记等于删除 (或截断) 事务的落实时间。

使用命令行创建临时模式

要创建临时模式,请将 DATA_VERSION_RETENTION_TIME 设置为非零值。

有关详细语法和特权,请参阅 CREATE SCHEMA 命令。

CREATE SCHEMA <schema_name> DATA_VERSION_RETENTION_TIME <number-of-days>;

示例:

CREATE SCHEMA SCHEMA1 DATA_VERSION_RETENTION_TIME 30;

使用命令行创建临时数据库

要创建临时数据库,请将 DATA_VERSION_RETENTION_TIME 设置为非零值。

有关详细语法和特权,请参阅 CREATE DATABASE 命令

CREATE DATABASE <db_name> DATA_VERSION_RETENTION_TIME <number-of-days>;

示例:

CREATE DATABASE DB1 DATA_VERSION_RETENTION_TIME 30;

使用 Web 控制台创建时间旅行对象

使用 Web 控制台创建时态表

  1. 登录到 Web 控制台,如 Web 控制台入门 中所述。
  2. 创建时态表,如 创建表 中所述。

必须将 保留时间间隔 设置为非零值。

包含点字符 (".") 的数据库,模式和表名 当您将 保留时间间隔 设置为非零值时,不会在时间旅行统计信息和图形中显示。 如果未设置 保留时间间隔,那么支持所有特殊字符。

将行插入到表中时,该行将接收到等于插入事务的落实时间的虚拟插入时间戳记。

从表中删除行时,该行接收的虚拟删除时间戳记等于删除 (或截断) 事务的落实时间。

使用 Web 控制台创建时间模式

要创建临时模式,请将 保留时间间隔 设置为非零值。

  1. 登录到 Web 控制台,如 Web 控制台入门 中所述。
  2. 创建临时模式,如 创建模式 中所述。

使用命令行创建临时数据库

要创建临时数据库,请将 保留时间间隔 设置为非零值。

  1. 登录到 Web 控制台,如 Web 控制台入门 中所述。
  2. 创建临时数据库,如 创建数据库 中所述。

使用命令行更改时间旅行对象

使用命令行将时态表变更为非时态表

要将时态表变更为非时态表,请将 DATA_VERSION_RETENTION_TIME 设置为 0。

有关详细语法和必需特权,请参阅 ALTER TABLE 命令

ALTER TABLE <table> DATA_VERSION_RETENTION_TIME 0;

示例:

ALTER TABLE PRODUCT DATA_VERSION_RETENTION_TIME 0;

DATA_VERSION_RETENTION_TIME 设置为 0 时,无法运行时间旅行查询,并且您不再有权访问该表的历史行。 您可以使用 GROOM TABLE 回收表中部分或全部现在不可访问的历史行。

使用命令行将非时态表更改为时态表

要将非时态表变更为时态表,请将 DATA_VERSION_RETENTION_TIME] 设置为非零值。

有关详细语法和必需特权,请参阅 ALTER TABLE 命令

ALTER TABLE <table> DATA_VERSION_RETENTION_TIME <number-of-days>;

示例:

ALTER TABLE PRODUCT DATA_VERSION_RETENTION_TIME 30;

如果首先禁用了时态表,然后将同一表转换为时态表,那么您无权访问该表的先前历史行。 在将表转换为临时表后删除或更新行时,将收集历史数据。

CREATE TABLE 命令一样,插入到表中的行接收的虚拟插入时间戳记等于插入事务的落实时间。 从表中删除的行接收的虚拟删除时间戳记等于删除 (或截断) 事务的落实时间。 表的保留时间下限和保留开始时间等于或正好早于此 ALTER TABLE 事务的落实时间。

与不具有任何现有行的 CREATE TABLE 命令不同,表中的现有可视行被视为被此 ALTER TABLE 事务插入。 现有可视行接收等于保留开始时间的虚拟插入时间戳记。 通过这些时间戳记,这些行可能对时间旅行查询可视。

使用命令行将时间模式更改为非时间模式

要将临时模式变更为非临时模式,请将 DATA_VERSION_RETENTION_TIME 设置为 0。

有关详细语法,必需特权和 CASCADE 选项,请参阅 ALTER SCHEMA 命令

ALTER SCHEMA <schema_name> DATA_VERSION_RETENTION_TIME 0 NOCASCADE;

示例:

ALTER SCHEMA SCHEMA DATA_VERSION_RETENTION_TIME 0 NOCASCADE;

使用命令行将非临时模式更改为临时模式

要将非时态模式变更为时态模式,请将 DATA_VERSION_RETENTION_TIME 设置为非零值。

有关详细语法,必需特权和 CASCADE 选项,请参阅 ALTER SCHEMA 命令

ALTER SCHEMA <schema_name> DATA_VERSION_RETENTION_TIME <number-of-days> NOCASCADE;

示例:

ALTER SCHEMA DB1 DATA_VERSION_RETENTION_TIME 30 NOCASCADE;

使用命令行将临时数据库更改为非临时数据库

要将临时数据库变更为非临时数据库,请将 DATA_VERSION_RETENTION_TIME 设置为 0。

有关详细语法和必需特权,请参阅 ALTER DATABASE 命令

ALTER DATABASE <db_name> DATA_VERSION_RETENTION_TIME 0 NOCASCADE;

示例:

ALTER DATABASE DB1 DATA_VERSION_RETENTION_TIME 0 NOCASCADE;

使用命令行将非时态数据库更改为时态数据库

要将非临时数据库变更为临时数据库,请将 DATA_VERSION_RETENTION_TIME 设置为非零值。

有关详细语法和必需特权,请参阅 ALTER DATABASE 命令

ALTER DATABASE <db_name> DATA_VERSION_RETENTION_TIME <number-of-days> NOCASCADE;

示例:

ALTER DATABASE DB1 DATA_VERSION_RETENTION_TIME 30 NOCASCADE;

使用 Web 控制台改变时间旅行对象

使用 Web 控制台将时态表变更为非时态表

要将时态表变更为非时态表,请将 保留时间间隔 设置为 0。

  1. 登录到 Web 控制台,如 Web 控制台入门 中所述。
  2. 更新表的保留时间间隔 中所述更改表。

保留时间间隔 设置为 0 时,无法运行时间旅行查询,并且您不再具有对该表的历史行的访问权。 您可以使用 GROOM TABLE 回收表中部分或全部现在不可访问的历史行。

使用 Web 控制台将非时态表更改为时态表

要将非时态表变更为时态表,请将 保留时间间隔 设置为非零值。

  1. 登录到 Web 控制台,如 Web 控制台入门 中所述。
  2. 更新表的保留时间间隔 中所述更改表。

如果首先禁用了时态表,然后将同一表转换为时态表,那么您无权访问该表的先前历史行。 在将表转换为临时表后删除或更新行时,将收集历史数据。

与创建表时类似,插入到表中的行接收的虚拟插入时间戳记等于插入事务的落实时间。 从表中删除的行接收的虚拟删除时间戳记等于删除 (或截断) 事务的落实时间。 表的保留时间下限和保留开始时间等于或正好早于此变更事务的落实时间。

与创建表不同,表中的现有可视行被视为已由此变更事务插入。 现有可视行接收等于保留开始时间的虚拟插入时间戳记。 通过这些时间戳记,这些行可能对时间旅行查询可视。

使用 Web 控制台将时间模式更改为非时间模式

要将临时模式变更为非临时模式,请将 保留时间间隔 设置为 0。

  1. 登录到 Web 控制台,如 Web 控制台入门 中所述。
  2. 更改表,如 更新模式的保留时间间隔 中所述。

使用 Web 控制台将非时态模式改变为时态模式

要将非时态模式变更为时态模式,请将 保留时间间隔 设置为非零值。

  1. 登录到 Web 控制台,如 Web 控制台入门 中所述。
  2. 更改表,如 更新模式的保留时间间隔 中所述。

使用 Web 控制台将临时数据库更改为非临时数据库

要将临时数据库变更为非临时数据库,请将 保留时间间隔 设置为 0。

  1. 登录到 Web 控制台,如 Web 控制台入门 中所述。
  2. 更改表,如 更新数据库的保留时间间隔 中所述。

使用 Web 控制台将非时态数据库变更为时态数据库

要将非时态数据库变更为时态数据库,请将 保留时间间隔 设置为非零值。

  1. 登录到 Web 控制台,如 Web 控制台入门 中所述。
  2. 更改表,如 更新数据库的保留时间间隔 中所述。

后续操作

创建时间旅行对象后,可以开始运行时间旅行查询。 有关更多信息,请参阅以下链接: