移动数据存储位置
SET_OBJECT_STORAGE_POLICY 将数据存储从现有位置(带标签和不带标签)移至另一个带标签的位置。该函数执行两个任务:
-
为对象创建存储策略,或更改其当前策略。
-
将指定对象的所有现有数据移至目标存储位置。
在该函数将对象数据移至指定的目标位置之前,Vertica 会计算所需的存储并检查目标处的可用空间。在调用 SET_OBJECT_STORAGE_POLICY 之前,请检查新目标位置上的可用空间。请注意,检查并不能保证在 Tuple Mover 实际执行移动时该空间仍然可用。如果存储位置没有足够的可用空间,该函数将返回错误。
注意
将对象的当前存储移至新目标是群集范围的操作。如果某个节点不可用,该函数会返回一条警告消息,然后继续在其他节点上实施移动。当节点重新加入群集时,Tuple Mover 会使用存储数据更新群集。默认情况下,Tuple Mover 在所有待定的合并任务返回后才将对象数据移至新的存储位置。您可以通过将函数的 enforce-storage-move 实参设置为 true 来强制立即移动数据。例如,以下语句设置表的存储策略并立即实施移动操作:
=> SELECT SET_OBJECT_STORAGE_POLICY('states', 'SSD', 'true');
SET_OBJECT_STORAGE_POLICY
------------------------------------------------------------------------------------------------
Object storage policy set.
Task: moving storages
(Table: public.states) (Projection: public.states_p1)
(Table: public.states) (Projection: public.states_p2)
(Table: public.states) (Projection: public.states_p3)
(1 row)