すべてのプロダクト
Search
ドキュメントセンター

PolarDB:LOCALITY属性を使用してデータノードを指定する (AUTOモード)

最終更新日:Jun 05, 2024

このトピックでは、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];

  1. AUTOパーティショニングモードを使用するデータベースを作成し、データベースのLOCALITY属性を指定します。 構文の詳細については、「CREATE DATABASE」をご参照ください。

    CREATE DATABASE db1 LOCALITY='dn=polardbx-ng28-dn-0、polardbx-ng28-dn-1、polardbx-ng28-dn-2 'MODE = 'auto';
  2. データベースの作成後、次のステートメントを実行して、データベースにデータを格納するために使用されるデータノードなど、データベースに関する情報を照会します。

    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秒) 
  3. 次のステートメントを実行して、データベースの論理データベースシャードと物理データベースシャードを照会します。

    ショー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] 

  1. 論理テーブルを作成し、論理テーブルの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 '; 
  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秒) 
  3. 次のステートメントを実行して、論理テーブルの各パーティションに関する情報を照会します。

    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属性を指定する

論理テーブルを作成するときに、論理テーブルの各パーティションのデータノードを指定できます。 このようにして、論理テーブルの異なるパーティションが異なるデータノードに格納される。

  1. 論理テーブルを作成し、論理テーブルの各パーティションの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 ';
                
  2. 次のステートメントを実行して、論理テーブルの情報を照会します。

    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秒) 
  3. 次のステートメントを実行して、論理テーブルの各パーティションに関する情報を照会します。

    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属性を使用して、ホットデータパーティションを格納するデータノードを指定できます。 このように、ホットデータは非ホットデータから物理的に分離される。