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 本記事を公開