はじめに
作成した非パーティションテーブルをパーティションテーブルに変更する方法をご紹介します。非パーティションテーブルにデータをロードした後でもテーブルを再作成することなくオンラインでパーティションテーブルに変更することがきます。
パーティショニングに関しては以下を参照ください。
パーティショニングの概要
http://vertica-tech.ashisuto.co.jp/partition_overview/
パーティションテーブルに変更する方法
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 |
■lineorder表を非パーティションで作成します。 dbadmin=> CREATE TABLE ssbm.LINEORDER (LO_ORDERKEY NUMERIC(10), LO_LINENUMBER INTEGER, LO_CUSTKEY NUMERIC(10), LO_PARTKEY INTEGER, LO_SUPPKEY NUMERIC(10), LO_ORDERDATE DATE NOT NULL, <=== ★ LO_ORDERPRIORITY CHAR(15), LO_SHIPPRIORITY CHAR(1), LO_QUANTITY NUMERIC(10), LO_EXTENDEDPRICE NUMERIC(10), LO_ORDERTOTALPRICE NUMERIC(10), LO_DISCOUNT NUMERIC(10), LO_REVENUE NUMERIC(10), LO_SUPPLYCOST NUMERIC(10), LO_TAX NUMERIC(10), LO_COMMIT_DATE NUMERIC(10), LO_SHIPMODE CHAR(10)) ; ■lineorder表にデータがロードされた状態でlo_orderdate列(DATE型)の年でパーティショニングします。 dbadmin=> ALTER TABLE lineorder PARTITION BY EXTRACT(year from lo_orderdate) REORGANIZE; ■lineorder表がパーティション化されていることを確認します。 dbadmin=> SELECT PARTITION_KEY,PROJECTION_NAME,ROS_SIZE_BYTES,ROS_ROW_COUNT,NODE_NAME FROM partitions ORDER BY partition_key; PARTITION_KEY | PROJECTION_NAME | ROS_SIZE_BYTES | ROS_ROW_COUNT | NODE_NAME ---------------+-----------------+----------------+---------------+----------------- 1992 | LINEORDER_super | 43775956 | 1513933 | v_vdb2_node0001 1993 | LINEORDER_super | 43909447 | 1518755 | v_vdb2_node0001 1994 | LINEORDER_super | 43941216 | 1519659 | v_vdb2_node0001 1995 | LINEORDER_super | 43891114 | 1518060 | v_vdb2_node0001 1996 | LINEORDER_super | 44015590 | 1522426 | v_vdb2_node0001 1997 | LINEORDER_super | 43829193 | 1515763 | v_vdb2_node0001 1998 | LINEORDER_super | 25655660 | 891404 | v_vdb2_node0001 PARTITION_KEYを確認することで年単位でパーティショニングされていることがわかります。 ※すでに最適化された状態であれば、パーティションテーブルに変更した後に最適化を行う必要はありません。 |
考慮事項
・パーティションの対象列にはNOT NULL制約を設定する必要があります。・パーティション句の式で使用されるSQL関数は不変でなければなりません。
・パーティション句で集合演算(MAXやAVGなど)などのクエリは指定できません。
・非パーティションテーブルからパーティションテーブルに変更する際は負荷が高くなりますので、システムに影響がない時間帯で行ってください。
検証バージョンについて
この記事の内容はVertica 9.2で確認しています。更新履歴
2019/03/13 検証バージョンを9.2に変更2015/11/18 本記事を公開
- 投稿タグ
- PARTITION