Pivotal Knowledge Base

フォローする

新規生成テーブルがランダムに分散される

環境

製品 バージョン
Pivotal Greenplum 全てのバージョン

事象

Greenplum は、新規にテーブルを生成し分散ポリシーが明示的に設定されていない場合、第一カラムをその分散カラムとして自動的に設定しないことがある。したがって、全ての新規生成テーブルがランダムに分散されてしまう。 

原因

これは GUC の "gp_create_table_random_default_distribution" が、当該クラスターにて有効化されているためである。

解決策

テーブル生成時にデータ分散のためのカラムを自動的に設定することを保証するよう、gp_create_table_random_default_distribution パラメーターを無効化する。

以下設定例を記載する。

1. 当該パラメーターを無効化した状態でテーブルを生成する。

flightdata=# show gp_create_table_random_default_distribution;
 gp_create_table_random_default_distribution
---------------------------------------------
 off
(1 row)


flightdata=# create table p1 ( a int , b int );
NOTICE:  Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'a' as the Greenplum Database data distribution key for this table.
HINT:  The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew.
CREATE TABLE

flightdata=# \d p1
      Table "public.p1"
 Column |  Type   | Modifiers
--------+---------+-----------
 a      | integer |
 b      | integer |
Distributed by: (a)

2. 当該パラメーターが有効化されている場合は、新規生成テーブルはランダムに分散される。

flightdata=# set gp_create_table_random_default_distribution=on;
SET

flightdata=# create table p2 ( a int , b int ); NOTICE: Using default RANDOM distribution since no distribution was specified. HINT: Consider including the 'DISTRIBUTED BY' clause to determine the distribution of rows. CREATE TABLE
flightdata=# \d p2 Table "public.p2" Column | Type | Modifiers --------+---------+----------- a | integer | b | integer | Distributed randomly

コメント

Powered by Zendesk