RETIRE_LOCATION
停用指定的存储位置。要获取所有现有存储位置的列表,请查询 STORAGE_LOCATIONS 系统表。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
RETIRE_LOCATION ( 'path', 'node' [, enforce ] )
参数
- 路径
- 要停用的存储位置所挂载的位置。
- 节点
- 要在其上停用位置的 Vertica 节点。要在所有节点上执行此操作,请使用空字符串 (
''
)。如果存储位置为 SHARED,则必须在所有节点上执行此操作。 - enforce
- 如果为
true
,位置标签将设为空字符串,并且将数据移到其他位置。然后可以删除该位置,而不会出现错误或警告。使用此实参加快删除位置。
超级用户
停用存储位置的影响
RETIRE_LOCATION 检查确认该位置不是唯一的数据和临时文件存储。每个节点上必须至少存在一个用于存储数据和临时文件的位置。但可以将这两种文件存储在同一位置或单独的位置。
如果某个位置是最后一个可用于存储其关联对象的位置,则只有将 enforce 设置为 true
才能将其停用。
在停用存储位置时:
-
停用的位置不会存储任何新数据,除非首先使用 RESTORE_LOCATION 对其进行还原。
-
默认情况下,如果当前停用的存储位置包含存储的数据,该数据将不会移动。因此不能删除该存储位置。相反,Vertica 将通过一次或多次合并来移除存储的数据。要在停用位置后立即将其删除,请将 enforce 设置为 true。
-
如果当前停用的存储位置仅用于临时文件,或者使用了 enforce,则可以删除该位置。请参阅 删除存储位置 和 DROP_LOCATION。
有关每个节点使用的磁盘存储信息,请查询
DISK_STORAGE
系统表。
示例
以下示例显示了停用存储位置的两种方法:
您可以停用存储位置,未来将自动移出其数据:
=> SELECT RETIRE_LOCATION ('/data' , 'v_vmartdb_node0004');
您可以指定存储位置中要立即移动的数据,这样无需等待即可删除该位置:
=> SELECT RETIRE_LOCATION ('/data' , 'v_vmartdb_node0004', true);