SHARD_CHUNK_ID演算子
SQL演算子SHARD_CHUNK_ID
を使用して、シャーディング環境でチャンクIDを取得できます。表ファミリIDおよびシャーディング・キーを入力として指定する必要があります。
この演算子は、システム、ユーザー定義およびコンポジットの3つのシャーディング・タイプすべてで使用できます。カタログおよびシャードから演算子を実行できます。
構文
SELECT SHARD_CHUNK_ID( table_family, sharding_key1 [, sharding_key2 ...]) FROM table_name ...
セマンティクス
table_family
最初のオペランドtable_family
は、表ファミリの識別子を示します。次を指定できます。
-
GSMADMIN_INTERNAL.TABLE_FAMILY
表から問い合せることができる表ファミリIDまたは -
SCHEMA_NAME.TABLE_NAME
の形式のルート表の名前。
シャーディング環境全体に1つの表ファミリしかない場合、table_family
は入力としてNULLを取ることができます。これは、デフォルトで既存の単一表ファミリに設定されます。
sharding_key
2番目のオペランドsharding_key
は、シャーディング・キーのリストを示します。定数値または列名を指定できます。
シャーディング・キーのリストは、次のように順序付けする必要があります。
- スーパーシャーディング・キーの定義順のリスト。
- シャーディング・キーの定義順のリスト。詳細は、
GSMADMIN_INTERNAL.SHARDKEY_COLUMNS
に関する項を参照してください。
スーパーシャーディング・キーが使用されないシステムおよびユーザー定義のシャーディング環境では、シャーディング・キーのみを指定する必要があります。
例
次のように定義されたコンポジット・シャード表customers
があるとします。
CREATE SHARDED TABLE customers (
custno NUMBER NOT NULL,
name VARCHAR2(50) NOT NULL,
signup DATE DEFAULT NULL,
class VARCHAR2(3) NOT NULL,
CONSTRAINT cust_pk PRIMARY KEY(custno,name))
PARTITIONSET BY LIST (class)
PARTITION BY CONSISTENT HASH (custno,name)
PARTITIONS AUTO
(PARTITIONSET gold VALUES ('gld') TABLESPACE SET tbs1,
PARTITIONSET silver VALUES ('slv') TABLESPACE SET tbs2)
;
次の文を使用してチャンクIDを問い合せることができます。
SELECT SHARD_CHUNK_ID(null, class, custno, name) FROM customers;
関連項目: