このトピックでは、LOCALITY属性を使用して、AUTOパーティション分割メソッドを使用してパーティション分割されるデータベースオブジェクトを格納するデータノードを指定する方法について説明します。 この構文は、AUTOモードのデータベースにのみ適用されます。
PolarDB-Xは、AUTOモードのデータベースのLOCALITY属性をサポートしています。 データベース、テーブル、またはパーティションのデータノードを指定して、データを分離し、データを均等に分散できます。
LOCALITY属性は、次のシナリオで使用できます。
データベース、テーブル、およびパーティションのLOCALITY属性を指定できます。 データベース、テーブル、またはパーティションにLOCALITY属性を指定すると、データ配布を変更するために実行される操作は、LOCALITY属性の値によって制限されます。 データノードを削除するために実行される削除操作は、LOCALITY属性の値によって制限されません。
テーブルグループとパーティショングループのLOCALITY属性を変更できます。 LOCALITY属性の値が変更されると、非同期データ移行タスクが自動的にトリガーされます。
前提条件
PolarDB-Xインスタンスのカーネルバージョンは、V5.4.14以降である必要があります。
論理データベースはAUTOモードでパーティション分割する必要があります。
PolarDB-Xインスタンスのカーネルバージョンを表示する方法については、「インスタンスのバージョンの表示と更新」をご参照ください。
注意事項
データノードが削除されると、データノードのIDを含むLOCALITY属性は自動的に無効になります。
LOCALITY属性は、データノードのIDに基づいて指定される。 バックアップからデータノードのデータを復元すると、データベースオブジェクトの元のLOCALITY属性が自動的に無効になります。
PolarDB-Xインスタンスのデータノードに関する情報の表示
次のステートメントを実行して、PolarDB-Xインスタンスのデータノードに関する情報を表示できます。
ショーストレージ;
サンプル結果:
---------- ----------------------------------------------------------------------------------
| STORAGE_INST_ID | LEADER_NODE | IS_HEALTHY | INST_KIND | DB_COUNT | GROUP_COUNT | STATUS | DELETABLE | DELAY | ACTIVE |
---------- -----------------------------------------------------------------------------------
| polardbx-ng28-dn-0 | polardbx-ng28-dn-0-cands-0:14289 | true | MASTER | 1 | 2 | 0 | false | null |
| polardbx-ng28-dn-1 | polardbx-ng28-dn-1-cands-0:14176 | true | MASTER | 1 | 1 | 0 | true | null |
| polardbx-ng28-dn-2 | polardbx-ng28-dn-2-cands-0:14568 | true | MASTER | 1 | 1 | 0 | true | null |
| polardbx-ng28-dn-3 | polardbx-ng28-dn-3-cands-0:16796 | true | MASTER | 1 | 1 | 0 | true | null |
| polardbx-ng28-gms | polardbx-ng28-dn-0-cands-0:14289 | true | META_DB | 2 | 2 | 0 | false | null |
----------- ----------------------------------------------------------------------------------
STORAGE_INST_ID
: LOCALITY属性の値に含まれるデータノードのID。INST_KIND
: データノードのタイプ。 値がMETA_DB
の場合、データノードはビジネスデータの格納に使用できないメタデータノードです。INST_KIND
: データノードのステータス。 値が0
の場合、データノードは使用可能です。DELTETABLE
: データノードを削除できるかどうかを示します。 値がfalse
の場合、データノードは削除できません。 上記の例では、メタデータノードとIDがpolardbx-ng28-dn-0のデータノードは削除できません。
データベースを作成するときにLOCALITY属性を指定する
データベースを作成するときに、データベースにデータを格納するデータノードを指定できます。 これにより、データベース内のデータは、同じインスタンス内の他のデータベース内のデータから分離されます。
構文
CREATE DATABASE database_nameデータベース [database_option_list];
例
AUTOパーティショニングモードを使用するデータベースを作成し、データベースのLOCALITY属性を指定します。 構文の詳細については、「CREATE DATABASE」をご参照ください。
CREATE DATABASE db1 LOCALITY='dn=polardbx-ng28-dn-0、polardbx-ng28-dn-1、polardbx-ng28-dn-2 'MODE = 'auto';
データベースの作成後、次のステートメントを実行して、データベースにデータを格納するために使用されるデータノードなど、データベースに関する情報を照会します。
SHOW CREATE DATABASE 'db1';
次の情報が返されます。
+ ---------- + -------------------------------------------------------------------------------------------------------------------- + | データベース | データベースの作成 | + ---------- + -------------------------------------------------------------------------------------------------------------------- + | db1 | データベース 'db1' /* MODE = 'auto' LOCALITY = "dn=polardbx-ng28-dn-0、polardbx-ng28-dn-1、polardbx-ng28-dn-2" */ | + ---------- + -------------------------------------------------------------------------------------------------------------------- + 1行セット (0.04秒)
次のステートメントを実行して、データベースの論理データベースシャードと物理データベースシャードを照会します。
ショーDS;
次の情報が返されます。
+ ---- -------------------- + -------------------- + --------------------------------- + ---------------------- + -------- | ID | STORAGE_INST_ID | DB | グループ | PHY_DB | 移動可能 | + ---- -------------------- + -------------------- + --------------------------------- + ---------------------- + ------- | 0 | polardbx-ng28-dn-0 | db1 | DB1_P00000_GROUP | db1_p00000 | 1 | | 1 | polardbx-ng28-dn-1 | db1 | DB1_P00001_GROUP | db1_p00001 | 1 | | 2 | polardbx-ng28-dn-2 | db1 | DB1_P00002_GROUP | db1_p00002 | 1 | | 3 | polardbx-ng28-gms | information_schema | INFORMATION_SCHEMA_SINGLE_GROUP | polardbx_info_schema | 0 | + ---- -------------------- + -------------------- + --------------------------------- + ---------------------- + ------- セットの4列 (0.04秒)
説明データベースの格納場所には、シリアル番号が0のデータノードが含まれている必要があります。 テーブルとパーティションの格納場所はこの制限の対象ではありません。
論理テーブルを作成するときにLOCALITY属性を指定する
論理テーブルを作成するときに、テーブルにデータを格納するデータノードを指定できます。 このようにして、テーブル内のデータは、同じデータベース内の他のテーブル内のデータから分離される。 LOCALITY属性は、RANGEパーティション分割方法、HASHパーティション分割方法、またはLISTパーティション分割方法を使用してパーティション分割された非パーティション分割テーブルとパーティション分割テーブルに指定できます。
構文
CREATE [PARTITION] TABLE [存在しない場合] tbl_name
(create_definition, ...)
[table_options]
[table_partition_definition]
[local_partition_definition]
例
論理テーブルを作成し、論理テーブルのLOCALITY属性を指定します。 構文の詳細については、「CREATE TABLE (AUTOモード) 」をご参照ください。
CREATE TAB_order ( 'id' bigint (11) NOT NULL AUTO_INCREMENT BY GROUP、 'order_id' varchar(20) DEFAULT NULL、 'buyer_id 'varchar(20) デフォルトNULL、 'seller_id 'varchar(20) DEFAULT NULL、 'order_snapshot' ロングテキストDEFAULT NULL、 'order_detail' ロングテキストDEFAULT NULL、 主要なキー ('id') 、 KEY 'L_i_order ' ('order_id') ) エンジン=InnoDBデフォルト料金セット=utf8地域='dn=polardbx-ng28-dn-1、polardbx-ng28-dn-2 ';
次のステートメントを実行して、テーブルに関する情報を照会します。
SHOW CREATE TABLE 't_order';
次の情報が返されます。
+ --------- + ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + | TABLE | テーブルの作成 | + --------- + ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + | t_order | CREATE TABLE 't_order' ( 'id' bigint(11) NOT NULL AUTO_INCREMENT、 'order_id' varchar(20) DEFAULT NULL、 'buyer_id 'varchar(20) デフォルトNULL、 'seller_id 'varchar(20) DEFAULT NULL、 'order_snapshot' ロングテキスト、 'order_detail' ロングテキスト、 主要なキー ('id') 、 インデックス 'l_i_order ' ('order_id') ) エンジン=InnoDBデフォルト料金=utf8 /* LOCALITY='dn=polardbx-ng28-dn-1、polardbx-ng28-dn-2 '*/ | + --------- + ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- + 1行セット (0.05秒)
次のステートメントを実行して、論理テーブルの各パーティションに関する情報を照会します。
TOPOLOGYではない_注文を表示します。
次の情報が返されます。
+ ---- ------------------ + -------------------- + ---------------- + ------------ -------------------- + | ID | GROUP_NAME | TABLE_NAME | PARTITION_NAME | PHY_DB_NAME | DN_ID | + ---- ------------------ + -------------------- + ---------------- + ----------- -------------------- + | 0 | DB1_P00002_GROUP | t_order_18dV_00001 | p2 | db1_p00002 | polardbx-ng28-dn-2 | | 1 | DB1_P00001_GROUP | t_order_18dV_00000 | p1 | db1_p00001 | polardbx-ng28-dn-1 | | 2 | DB1_P00001_GROUP | t_order_18dV_00002 | p3 | db1_p00001 | polardbx-ng28-dn-1 | + ---- ------------------ + -------------------- + ---------------- + ----------- -------------------- + セットの3列 (0.15秒)
説明論理テーブルのLOCALITY属性で指定されたデータノードは、論理テーブルを含むデータベースのデータノードセットに含まれている必要があります。
パーティション分割されていないテーブルを作成する場合は、論理テーブルのLOCALITY属性に指定できるデータノードは1つだけです。
論理テーブルが論理テーブルグループに含まれている場合、論理テーブルのLOCALITY属性の値は、テーブルグループ、パーティション、およびパーティショングループのLOCALITY属性の値と同じである必要があります。
デフォルトでは、論理テーブル、論理テーブルグループ、論理テーブルのグローバルセカンダリインデックス (GSI) 、およびGSIテーブルグループのLOCALITY属性の値は同じです。
論理テーブルのパーティションのLOCALITY属性を指定する
論理テーブルを作成するときに、論理テーブルの各パーティションのデータノードを指定できます。 このようにして、論理テーブルの異なるパーティションが異なるデータノードに格納される。
例
論理テーブルを作成し、論理テーブルの各パーティションのLOCALITY属性を指定します。
テーブルorders_regionを作成する ( order_id int AUTO_INCREMENTプライマリキー、 customer_id int, 国varchar(64) 、 都市varchar(64) 、 order_time datetimeがnullではない) リストコラムによるパーティー (国、都市) ( パーティションp1の値 ((「中国」、「上海」)) ローカル='dn=polardbx-ng28-dn-2 '、 パーティションp2の値 ((「中国」、「北京」)) ローカル='dn=polardbx-ng28-dn-2 '、 PARTITION p3 VALUES IN (('China a' 、'Hangzhou')) 、 パートp4の値 ((「中国」、「南京」)) 、 パートp5の値 ((「中国」、「光章」)) 、 PARTITION p6 VALUES IN (('China' 、'Shenzhen')) 、 PARTITION p7 VALUES IN (('China a' 、'Wuhan')) 、 PARTITION p8 VALUES IN ((「アメリカ」、「ニューヨーク」)) ) LOCALITY = 'dn=polardbx-ng28-dn-0、polardbx-ng28-dn-1 ';
次のステートメントを実行して、論理テーブルの情報を照会します。
SHOW CREATE TABLE 'orders_region';
次の情報が返されます。
+ -------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------ + | TABLE | テーブルの作成 | + --------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------ + | orders_region | CREATE TABLE 'orders_region' ( 'order_id' int (11) NOT NULL AUTO_INCREMENT、 'customer_id' int (11) DEFAULT NULL、 'country' varchar (64) DEFAULT NULL, 'cityy' varchar (64) DEFAULT NULL、 'order_time' datetime NOT NULL、 プライマリキー ('order_id') 、 KEY 'auto_shard_key_country_city '使用するBTREE ('country' 、'city') ) エンジン=InnoDBデフォルト料金=utf8mb4 /* LOCALITY='dn=polardbx-ng28-dn-0、polardbx-ng28-dn-1 '* / リストコラムによるパーティー (「国」、「都市」) (PARTITION 'p1' VALUES IN (('China' 、'Shanghai'))) エンジン=InnoDB LOCALITY='dn=polardbx-ng28-dn-2 '、 PARTITION 'p2' VALUES IN ((「中国」、「北京」)) エンジン=InnoDB LOCALITY='dn=polardbx-ng28-dn-2 '、 PARTITION 'p3' VALUES IN (('China','Hangzhou')) ENGINE = InnoDB, PARTITION 'p4' VALUES IN (('China' 、'Nanj')) ENGINE = InnoDB、 PARTITION 'p5' VALUES IN (('China a' 、'Guangzhou')) エンジン=InnoDB、 PARTITION 'p6' VALUES IN (('China' 、'Shenzhen')) エンジン=InnoDB、 PARTITION 'p7' VALUES IN (('China','Wuhan')) ENGINE = InnoDB, PARTITION 'p8' VALUES IN ((「アメリカ」、「ニューヨーク」)) エンジン=InnoDB) | + --------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ------------------------------------------ + 1行セット (0.05秒)
次のステートメントを実行して、論理テーブルの各パーティションに関する情報を照会します。
SHOW TOPOLOGY 'orders_region';
次の情報が返されます。
+ ---- ------------------ + -------------------------- + ---------------- + ------------ -------------------- + | ID | GROUP_NAME | TABLE_NAME | PARTITION_NAME | PHY_DB_NAME | DN_ID | + ---- ------------------ + -------------------------- + ---------------- + ----------- -------------------- + | 0 | DB1_P00002_GROUP | orders_region_RlsY_00000 | p1 | db1_p00002 | polardbx-ng28-dn-2 | | 1 | DB1_P00002_GROUP | orders_region_RlsY_00001 | p2 | db1_p00002 | polardbx-ng28-dn-2 | | 2 | DB1_P00001_GROUP | orders_region_RlsY_00003 | p4 | db1_p00001 | polardbx-ng28-dn-1 | | 3 | DB1_P00001_GROUP | orders_region_RlsY_00004 | p5 | db1_p00001 | polardbx-ng28-dn-1 | | 4 | DB1_P00001_GROUP | orders_region_RlsY_00006 | p7 | db1_p00001 | polardbx-ng28-dn-1 | | 5 | DB1_P00000_GROUP | orders_region_RlsY_00002 | p3 | db1_p00000 | polardbx-ng28-dn-0 | | 6 | DB1_P00000_GROUP | orders_region_RlsY_00005 | p6 | db1_p00000 | polardbx-ng28-dn-0 | | 7 | DB1_P00000_GROUP | orders_region_RlsY_00007 | p8 | db1_p00000 | polardbx-ng28-dn-0 | + ---- ------------------ + -------------------------- + ---------------- + ----------- -------------------- + セットの8行 (0.25秒)
説明論理テーブルのパーティションに指定されたデータノードは、テーブルパーティションを含むデータベースのデータノードセットに含まれている必要があります。 これらのデータノードは、論理テーブルのデータノードセットから除外することができる。
テーブルグループのLOCALITY属性の変更
ビジネス要件に基づいて、テーブルグループのLOCALITY属性を動的に変更できます。
構文
ALTER TABLEGROUP識別子SET LOCALITY = locality_option
locality_option:
'dn=storage_inst_id_list'
| ''
例
たとえば、orgers_regionテーブルがtg3テーブルグループに含まれている場合、次のステートメントを実行してtg3テーブルグループのLOCALITY属性を変更できます。
ALTER TABLEGROUP 'tg3' SET LOCALITY = 'dn=polardbx-ng28-dn-0 ';
tg3テーブルグループのLOCALITY属性を変更した後、SHOW TOPOLOGYステートメントを実行して、orders_regionテーブルのトポロジ関係を表示できます。
SHOW TOPOLOGY '注文_地域';
+ ---- ------------------ + -------------------------- + ---------------- + ----------- -------------------- +
| ID | GROUP_NAME | TABLE_NAME | PARTITION_NAME | PHY_DB_NAME | DN_ID |
+ ---- ------------------ + -------------------------- + ---------------- + ----------- -------------------- +
| 0 | DB1_P00002_GROUP | orders_region_RlsY_00000 | p1 | db1_p00002 | polardbx-ng28-dn-2 |
| 1 | DB1_P00002_GROUP | orders_region_RlsY_00001 | p2 | db1_p00002 | polardbx-ng28-dn-2 |
| 2 | DB1_P00000_GROUP | orders_region_RlsY_00002 | p3 | db1_p00000 | polardbx-ng28-dn-0 |
| 3 | DB1_P00000_GROUP | orders_region_RlsY_00003 | p4 | db1_p00000 | polardbx-ng28-dn-0 |
| 4 | DB1_P00000_GROUP | orders_region_RlsY_00004 | p5 | db1_p00000 | polardbx-ng28-dn-0 |
| 5 | DB1_P00000_GROUP | orders_region_RlsY_00005 | p6 | db1_p00000 | polardbx-ng28-dn-0 |
| 6 | DB1_P00000_GROUP | orders_region_RlsY_00006 | p7 | db1_p00000 | polardbx-ng28-dn-0 |
| 7 | DB1_P00000_GROUP | orders_region_RlsY_00007 | p8 | db1_p00000 | polardbx-ng28-dn-0 |
+ ---- ------------------ + -------------------------- + ---------------- + ----------- -------------------- +
セットの8行 (0.17秒)
tg3テーブルグループのLOCALITY属性が変更されると、対応するテーブルの作成時にLOCALITY属性を指定しなかったテーブルパーティションのデータノードが変更されます。 対応するテーブルの作成時にLOCALITY属性を指定したテーブルパーティションのデータノードは変更されません。 LOCALITY属性が変更されたテーブルグループまたはパーティショングループに関するメタ情報が変更された後、新しい情報はすぐにバックエンドシステムに送信されます。 次に、バックエンドシステムは、テーブルグループ内のパーティションを非同期に移行する移行タスクを生成します。
この例では、バックエンドシステムはREBALANCE TABLEGROUP tg3
タスクを実行してパーティションを移行します。 次のステートメントを実行して、information_schema.ddl_plan
から移行タスクの進行状況を照会できます。
SELECT * FROM information_schema.ddl_plan WHERE table_schema = "db1";
---- --------------------- --------------------- ----------- ------------------------------------------------------------------ ----------------------------------------------------------------------------------
| ID | plan_id | job_id | table_schema | ddl_stmt | state | ddl_type | progress | retry_count | result | extras | gmt_created | gmt_modified | resource |
---- --------------------- --------------------- ----------- ------------------------------------------------------------------ ----------------------------------------------------------------------------------
| 1 | 1465819565798723584 | 1465819579241467904 | db1 | REBALANCE TABLEGROUP 'tg3' EXPLAIN=false ASYNC=true DEBUG=false | 成功 | 100 | 0 | | | | 2022-05-24 14:37:58 | 2022-05-24 14:38:11 | tablegroup:tg3 |
---- --------------------- --------------------- ------------ ------------------------------------------------------------------ ---------------------------------------------------------------------------------- --------------------- --------------------- --------------------- --------------------- ---------------- ---------------- + ---------------- ---------------- ---------------- + ----------------
パーティショングループのLOCALITY属性の変更
ビジネス要件に基づいて、パーティショングループのLOCALITY属性を動的に変更できます。
構文
ALTER TABLEGROUP識別子SET PARTITIONS part_name LOCALITY = locality_option
locality_option:
'dn=storage_inst_id_list'
| ''
例
たとえば、orders_regionテーブルがtg3テーブルグループに含まれ、p3パーティションがorders_regionテーブルに含まれている場合、次のステートメントを実行してp3パーティションのLOCALITY属性を変更できます。
ALTER TABLEGROUP 'tg3' SET PARTITIONS p3 LOCALITY = 'dn=polardbx-ng28-dn-1 ';
p3パーティションのLOCALITY属性を変更した後、SHOW TOPOLOGYステートメントを実行して、orders_regionテーブルのトポロジ関係を表示できます。
ショーTOPOLOGY orders_region;
+ ---- ------------------ + -------------------------- + ---------------- + ----------- -------------------- +
| ID | GROUP_NAME | TABLE_NAME | PARTITION_NAME | PHY_DB_NAME | DN_ID |
+ ---- ------------------ + -------------------------- + ---------------- + ----------- -------------------- +
| 0 | DB1_P00002_GROUP | orders_region_RlsY_00000 | p1 | db1_p00002 | polardbx-ng28-dn-2 |
| 1 | DB1_P00002_GROUP | orders_region_RlsY_00001 | p2 | db1_p00002 | polardbx-ng28-dn-2 |
| 2 | DB1_P00001_GROUP | orders_region_RlsY_00002 | p3 | db1_p00001 | polardbx-ng28-dn-1 |
| 3 | DB1_P00000_GROUP | orders_region_RlsY_00003 | p4 | db1_p00000 | polardbx-ng28-dn-0 |
| 4 | DB1_P00000_GROUP | orders_region_RlsY_00004 | p5 | db1_p00000 | polardbx-ng28-dn-0 |
| 5 | DB1_P00000_GROUP | orders_region_RlsY_00005 | p6 | db1_p00000 | polardbx-ng28-dn-0 |
| 6 | DB1_P00000_GROUP | orders_region_RlsY_00006 | p7 | db1_p00000 | polardbx-ng28-dn-0 |
| 7 | DB1_P00000_GROUP | orders_region_RlsY_00007 | p8 | db1_p00000 | polardbx-ng28-dn-0 |
+ ---- ------------------ + -------------------------- + ---------------- + ----------- -------------------- +
セットの8行 (0.11秒)
パーティション変更操作後のLOCALITY属性の値の変更
AUTOモードのデータベースは、ALTER TABLEGROUP操作を含むパーティション変更操作をサポートします。実行される操作は、テーブルのタイプを変更します。 詳細については、「ALTER TABLEGROUP」および「テーブルのタイプとパーティショニングルールの変更」をご参照ください。
パーティション変更操作が実行された後、新しいパーティショングループまたはテーブルグループはLOCALITY属性の元の値を継承し、システムはLOCALITY属性の元の値に基づいて新しいテーブルグループまたはパーティショングループのデータ分散を実行します。 ただし、次のシナリオでは、LOCALITY属性の値が変更されます。
テーブルが非パーティションテーブルまたはブロードキャストテーブルに変更された後、テーブルのLOCALITY属性の値は空になります。
ホットデータを格納するパーティションが複数のパーティションに分割されると、新しいパーティションのLOCALITY属性の値が空になります。
LOCALITY属性の値が異なる複数のパーティションが1つのパーティションにマージされた後、新しいパーティションのLOCALITY属性の値は空になります。
パーティション変更操作後のLOCALITYの変更:
操作タイプ | オブジェクト | LOCALITYが変わるかどうか | 説明 |
パーティション分割戦略の変更 | テーブル | 可 | - |
テーブルタイプの変更 | テーブル | LOCALITY属性は、非パーティションテーブルがパーティションテーブルに変更された場合にのみ変更されません。 | パーティションテーブルが非パーティションテーブルまたはブロードキャストテーブルに変更された場合、テーブルのLOCALITY属性は無効になります。 |
パーティションの移行 | パーティショングループ | 可 | - |
パーティションの結合 | パーティショングループ | 新しいパーティションは、マージされるすべてのパーティションのLOCALITY属性の値が同じである場合にのみ、マージされるパーティションのLOCALITY属性の値を継承します。 | パーティションのLOCALITY属性の値が異なる場合、新しいパーティションのLOCALITY属性の値はデフォルトで空です。 |
パーティションの分割 | パーティショングループ | 可 | - |
ホット値でパーティションを分割する | パーティショングループ | 任意 | デフォルトでは、新しいパーティションのLOCALITY属性の値は空です。 |
パーティションからホットデータを抽出する | パーティショングループ | 任意 | デフォルトでは、新しいパーティションのLOCALITY属性の値は空です。 |
パーティションを削除するDropping a partition | パーティショングループ | - | - |
パーティションの追加 | パーティショングループ | 可 | - |
LISTパーティション分割方法に基づくパーティションの変更 | パーティショングループ | 可 | - |
パーティションの名前変更 | パーティショングループ | 可 | - |
一般的なシナリオ
データベースを作成するときに、LOCALITY属性を使用して、データを分離する論理データベースのデータノードを指定できます。 データベース内のテーブルとパーティションは、指定されたデータノードに自動的に分散されます。
パーティション分割されていないテーブルを作成するときは、LOCALITY属性を使用してテーブルのデータノードを指定できます。 これは、過剰な数の非区分テーブルが存在する場合に、シリアル番号0のデータノードに対する高い記憶負荷を回避するのに役立つ。
パーティションテーブルを作成するときに、LOCALITY属性を使用してパーティションのデータノードを指定できます。 このようにして、テーブルのパーティションを異なるデータノードに分散させることができる。 たとえば、LISTパーティション分割方法を使用して、データをパーティション分割し、異なるデータノードの異なるリージョンで生成されたデータを格納できます。
データパーティションにホットデータが含まれている場合、パーティションを分割し、LOCALITY属性を使用して、ホットデータパーティションを格納するデータノードを指定できます。 このように、ホットデータは非ホットデータから物理的に分離される。