删除存储位置

要删除存储位置,请使用 DROP_LOCATION 函数。您不能删除 DATA 用途的位置,只能删除 TEMP 或 USER 用途的位置。(请参阅在删除之前更改存储位置)。

由于删除存储位置的操作无法撤消,因此 Vertica 建议先停用存储位置(请参阅停用存储位置)。通过在删除之前停用存储位置,您可以验证这样做不会对任何数据访问产生负面影响。如果您决定不删除它,可以进行还原(请参阅还原已停用的存储位置)。

以下示例显示了如何删除单个节点上的存储位置:

=> SELECT DROP_LOCATION('/secondStorageLocation/' , 'v_vmartdb_node0002');

删除存储位置时,此操作会级联到关联的对象,包括授予存储的任何权限。

在删除之前更改存储位置

您只能删除包含临时文件的存储位置。因此,在可以删除之前,必须将存储位置更改为 TEMP 使用类型。但是,如果存储位置中仍存在数据文件,Vertica 会禁止您删除该存储位置。删除数据文件不会清除存储位置,并且可能会导致数据库崩溃。要处理包含数据文件的存储区域以便能够删除它,请使用以下选项之一:

  • 手动合并数据文件。

  • 等待 Tuple Mover 自动合并数据文件。

  • 停用位置,并强制所做的更改立即生效。

  • 手动删除分区

删除 HDFS 存储位置

删除 HDFS 上的存储位置后,清理 HDFS 上的残留文件和快照,如移除 HDFS 存储位置中所述。

删除 USER 存储位置

使用 USER 使用类型创建的存储位置只能包含数据文件,而非临时文件。但是,您可以删除 USER 位置,而不考虑剩下的任何数据文件。此行为与未指定用于 USER 访问的存储位置的行为不同。

检查位置属性

您可以在 STORAGE_LOCATIONS 系统表中检查存储位置的属性,例如是 USER 位置还是仅用于 TEMP 文件。还可以使用此表来确认位置是否已停用。