MoveoutとMergeoutの手動実行
はじめに
Moveoutはデフォルトで5分置きに、Mergeoutはデフォルトで10分置きに実行されますが、手動でMoveoutとMergeoutを実行することができますので、その方法をご紹介します。MoveoutやMergeoutに関しては以下を参照ください。
MoveoutとMergeout
http://vertica-tech.ashisuto.co.jp/moveout-mergeout/
MoveoutとMergeoutの手動実行方法
【moveoutの手動実行方法】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
■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の手動実行方法】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
■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 本記事を公開