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は、シャーディング・キーのリストを示します。定数値または列名を指定できます。

シャーディング・キーのリストは、次のように順序付けする必要があります。

  1. スーパーシャーディング・キーの定義順のリスト。
  2. シャーディング・キーの定義順のリスト。詳細は、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;

関連項目: