OpenText Analytics Database 旧Vertica

技術情報サイト

Analytics Database

MoveoutとMergeoutの手動実行

公開日:
更新日:
基本操作
#Moveout
#Mergeout

MoveoutとMergeoutの手動実行

はじめに

Moveoutはデフォルトで5分置きに、Mergeoutはデフォルトで10分置きに実行されますが、手動でMoveoutとMergeoutを実行することができますので、その方法をご紹介します。

MoveoutやMergeoutに関しては以下を参照ください。

MoveoutとMergeout
https://www.ashisuto.co.jp/cm/analytics-database/moveout-mergeout.html

MoveoutとMergeoutの手動実行方法

【moveoutの手動実行方法】

■CUSTOMER表のデータがWOSに存在することを確認します。
dbadmin=> select p.anchor_table_name,storage_type from storage_containers s,projections p where s.projection_id = p.projection_id;
 anchor_table_name | storage_type
-------------------+--------------
 CUSTOMER          | WOS
(1 row)

■CUSTOMER表のデータをdo_tm_taskを使用してWOSからROSにmoveoutします。
dbadmin=> select do_tm_task('moveout','customer');
                                          do_tm_task
-----------------------------------------------------------------------------------------------
 Task: moveout
(Table: public.CUSTOMER) (Projection: public.CUSTOMER_DBD_1_rep_dbd2_node0001)

(1 row)
※テーブル名を指定しない場合は、全てのテーブルがmoveoutされます。

■CUSTOMER表のデータがROSにmoveoutされたことを確認します。
dbadmin=> select p.anchor_table_name,storage_type from storage_containers s,projections p where s.projection_id = p.projection_id;
 anchor_table_name | storage_type
-------------------+--------------
 CUSTOMER          | ROS
(1 row)

【mergeoutの手動実行方法】

■date1表のデータがROSに2個のROSコンテナとして存在することを確認します。
 SQL文中では、確認したいテーブル名を、where句の[p.anchor_table_name]で指定してください。

#Vertica 10.0未満の場合
dbadmin=> select p.anchor_table_name,s.projection_name,count(s.projection_name) as ROS_count 
from projections p,storage_containers s
where s.projection_id = p.projection_id
and s.storage_type='ROS'
and p.anchor_table_name='date1'
group by p.anchor_table_name,s.projection_name;

#Vertica 10.0以上の場合
dbadmin=> select p.anchor_table_name,s.projection_name,count(s.projection_name) as ROS_count 
from projections p,storage_containers s
where s.projection_id = p.projection_id
and p.anchor_table_name='date1'
group by p.anchor_table_name,s.projection_name;

<出力例>
 anchor_table_name | projection_name | ROS_count
-------------------+-----------------+-----------
 date1             | date1_super     | 2★
(1 row)

■date1表のROSコンテナをdo_tm_taskを使用してmergeoutします。

dbadmin=> select do_tm_task('mergeout','date1');

                               do_tm_task
------------------------------------------------------------------------
 Task: mergeout
(Table: public.date1) (Projection: public.date1_super)

(1 row)
※テーブル名を指定しない場合は、全てのテーブルがmergeoutされます。

■date1表のデータがmergeoutされたことを確認します。

#Vertica 10.0未満の場合 
dbadmin=> select p.anchor_table_name,s.projection_name,count(s.projection_name) as ROS_count 
from projections p,storage_containers s
where s.projection_id = p.projection_id
and s.storage_type='ROS'
and p.anchor_table_name='date1'
group by p.anchor_table_name,s.projection_name;

#Vertica 10.0以上の場合
dbadmin=> select p.anchor_table_name,s.projection_name,count(s.projection_name) as ROS_count 
from projections p,storage_containers s
where s.projection_id = p.projection_id
and p.anchor_table_name='date1'
group by p.anchor_table_name,s.projection_name;

<出力例>
 anchor_table_name | projection_name | ROS_count
-------------------+-----------------+-----------
  date1            | date1_super     | 1★
(1 row)

検証バージョンについて

この記事の内容はVertica 12.0で確認しています。

更新履歴

2022/12/26 ROSコンテナ数の確認方法は、Vertica 10.0以上の場合にstorage_containers.storage_type が非推奨になったので削除
2016/06/23 本記事を公開