MOVE_RETIRED_LOCATION_DATA

从数据库中指定的停用存储位置或从全部停用存储位置移出全部数据。 MOVE_RETIRED_LOCATION_DATA 根据存储数据对象的存储策略,将数据移动至非停用存储位置。此函数仅在完成所有受影响的存储位置数据的迁移后才返回。

这是元函数。您必须在顶级 SELECT 语句中调用元函数。

行为类型

易变

语法

MOVE_RETIRED_LOCATION_DATA( ['location‑path'] [, 'node'] )

参数

location‑path
系统表 STORAGE_LOCATIONSLOCATION_PATH 列所指定的存储位置的路径。此存储位置必须标记为已停用。

如果忽略此参数,MOVE_RETIRED_LOCATION_DATA 将从所有停用的存储位置移出数据。

节点
要在其上移动停用存储位置的数据的节点。如果 node 上未定义 location-path,则此函数返回错误。

如果忽略此参数,MOVE_RETIRED_LOCATION_DATA 将从所有节点的 location-path 移出数据。

超级用户

示例

  1. 查询系统表 STORAGE_LOCATIONS,显示停用的存储位置:

    => SELECT node_name, location_path, location_label, is_retired FROM STORAGE_LOCATIONS
       WHERE is_retired = 't';
        node_name     |    location_path     | location_label | is_retired
    ------------------+----------------------+----------------+------------
     v_vmart_node0001 | /home/dbadmin/SSDLoc | ssd            | t
     v_vmart_node0002 | /home/dbadmin/SSDLoc | ssd            | t
     v_vmart_node0003 | /home/dbadmin/SSDLoc | ssd            | t
    (3 rows)
    
  2. 查询系统表 STORAGE_LOCATIONS 获取消息表的位置,消息表目前存储在停用存储位置 ssd

    => SELECT node_name, total_row_count, location_label FROM STORAGE_CONTAINERS
       WHERE projection_name ILIKE 'messages%';
        node_name     | total_row_count | location_label
    ------------------+-----------------+----------------
     v_vmart_node0001 |          333514 | ssd
     v_vmart_node0001 |          333255 | ssd
     v_vmart_node0002 |          333255 | ssd
     v_vmart_node0002 |          333231 | ssd
     v_vmart_node0003 |          333231 | ssd
     v_vmart_node0003 |          333514 | ssd
    (6 rows)
    
  3. 调用 MOVE_RETIRED_LOCATION_DATA,将数据移出 ssd 存储位置。

    => SELECT MOVE_RETIRED_LOCATION_DATA('/home/dbadmin/SSDLoc');
              MOVE_RETIRED_LOCATION_DATA
    -----------------------------------------------
     Move data off retired storage locations done
    
    (1 row)
    
  4. 重复前述查询,验证消息表的存储位置:

    
    => SELECT node_name, total_row_count, storage_type, location_label FROM storage_containers
       WHERE projection_name ILIKE 'messages%';
        node_name     | total_row_count | location_label
    ------------------+-----------------+----------------
     v_vmart_node0001 |          333255 | base
     v_vmart_node0001 |          333514 | base
     v_vmart_node0003 |          333514 | base
     v_vmart_node0003 |          333231 | base
     v_vmart_node0002 |          333231 | base
     v_vmart_node0002 |          333255 | base
    (6 rows)
    

另请参阅