Todos os produtos
Search
Central de documentação

PolarDB:Localidade

Última atualização: Jun 28, 2026

O atributo LOCALITY controla onde o PolarDB-X armazena dados ao vincular bancos de dados, tabelas ou partições a nós de dados (DNs) específicos. Use esse recurso para isolar cargas de trabalho entre unidades de negócio, balancear tabelas não particionadas entre nós ou fixar partições específicas em um armazenamento dedicado.

Casos de uso

  • Isolamento de carga de trabalho: Atribua bancos de dados diferentes a nós de dados distintos para evitar que unidades de negócio compitam pelos mesmos recursos de armazenamento.

  • Balanceamento de carga de tabela única: Distribua tabelas não particionadas entre os nós de dados para evitar sobrecarga no nó padrão (dn-0).

  • Particionamento geográfico: Armazene dados de regiões diferentes em nós dedicados usando particionamento LIST. Por exemplo, mantenha pedidos de Xangai e Pequim em um nó de alto desempenho enquanto outras regiões compartilham os nós restantes.

  • Isolamento de dados quentes: Após dividir uma partição quente, fixe a nova partição em um nó dedicado para separar fisicamente os dados quentes dos frios.

Como funciona o LOCALITY

LOCALITY é um atributo de objeto de banco de dados (banco de dados, tabela ou partição) que especifica quais nós de dados podem armazenar seus dados. Defina-o usando dn=<node-id-list> ou balance_single_table=on.

O LOCALITY aplica-se em quatro níveis:

Nível

O que controla

Banco de dados

Todas as tabelas e partições do banco de dados são distribuídas apenas pelos nós especificados

Tabela

Os dados da tabela ficam restritos aos nós especificados, independentemente de outras tabelas no mesmo banco de dados

Partição

Partições individuais são fixadas em nós específicos; outras partições na mesma tabela seguem o LOCALITY no nível de tabela

Tabela não particionada

balance_single_table=on distribui tabelas únicas uniformemente entre vários nós de dados

Como escolher o valor correto de LOCALITY:

Valor

Quando usar

dn=<node-id-list>

Isole um banco de dados, tabela ou partição em nós específicos

balance_single_table=on

Distribua automaticamente tabelas não particionadas entre vários nós de dados (apenas no nível de tabela)

"" (string vazia)

Limpe uma atribuição de LOCALITY existente e permita que o PolarDB-X gerencie o posicionamento automaticamente

Após definir o LOCALITY, a maioria das operações DDL (scale-out, alterações de partição) respeita a restrição. Duas operações ignoram o LOCALITY: exclusão de um nó de dados e restauração de dados a partir de um backup. Em ambos os casos, o valor de LOCALITY afetado torna-se inválido automaticamente.

Alterar o LOCALITY de um grupo de tabelas ou grupo de partições aciona uma tarefa de migração de dados assíncrona. A atualização dos metadados é imediata; a movimentação real dos dados ocorre em segundo plano.

Pré-requisitos

Antes de começar, verifique se:

Restrições

  • Ao excluir um nó de dados, qualquer atributo LOCALITY que referencie o ID desse nó torna-se inválido automaticamente.

  • Ao restaurar dados de um backup, o atributo LOCALITY original dos objetos restaurados torna-se inválido automaticamente.

  • Os nós de dados especificados em um LOCALITY no nível de tabela devem pertencer ao conjunto de nós de dados do banco de dados.

  • Para tabelas não particionadas, especifique apenas um nó de dados no atributo LOCALITY.

  • Se uma tabela pertencer a um grupo de tabelas, seu LOCALITY deve corresponder aos valores de LOCALITY do grupo de tabelas, da partição e do grupo de partições.

  • Por padrão, uma tabela lógica, seu grupo de tabelas, seus índices secundários globais (GSIs) e o grupo de tabelas GSI compartilham o mesmo valor de LOCALITY.

  • Os nós de dados especificados para partições individuais devem pertencer ao conjunto de nós de dados do banco de dados, mas não precisam constar no LOCALITY no nível de tabela.

  • Os locais de armazenamento de um banco de dados devem incluir o nó de dados com número de série 0 (por exemplo, polardbx-ng28-dn-0). Essa restrição não se aplica a tabelas ou partições.

Visualize informações do nó de dados

Antes de especificar o LOCALITY, verifique quais nós de dados estão disponíveis e anote seus IDs.

SHOW STORAGE;

Saída de exemplo:

+--------------------+----------------------------------+------------+-----------+----------+-------------+--------+-----------+-------+--------+
| 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  | null   |
| polardbx-ng28-dn-1 | polardbx-ng28-dn-1-cands-0:14176 | true       | MASTER    | 1        | 1           | 0      | true      | null  | null   |
| polardbx-ng28-dn-2 | polardbx-ng28-dn-2-cands-0:14568 | true       | MASTER    | 1        | 1           | 0      | true      | null  | null   |
| polardbx-ng28-dn-3 | polardbx-ng28-dn-3-cands-0:16796 | true       | MASTER    | 1        | 1           | 0      | true      | null  | null   |
| polardbx-ng28-gms  | polardbx-ng28-dn-0-cands-0:14289 | true       | META_DB   | 2        | 2           | 0      | false     | null  | null   |
+--------------------+----------------------------------+------------+-----------+----------+-------------+--------+-----------+-------+--------+

Colunas principais:

Coluna

Descrição

STORAGE_INST_ID

ID do nó de dados. Use este valor ao especificar o LOCALITY.

INST_KIND

Tipo de nó. META_DB é o nó de metadados e não pode armazenar dados de negócios.

STATUS

0 indica que o nó está disponível.

DELETABLE

Indica se o nó pode ser excluído. false significa que o nó não pode ser excluído (aplica-se ao nó de metadados e ao dn-0 no exemplo acima).

Defina LOCALITY ao criar objetos

Crie um banco de dados com LOCALITY

Especifique os nós de dados ao criar um banco de dados para isolar seus dados de outros bancos de dados na mesma instância PolarDB-X.

CREATE DATABASE db1
  LOCALITY = 'dn=polardbx-ng28-dn-0,polardbx-ng28-dn-1,polardbx-ng28-dn-2'
  MODE = 'auto';

Para a sintaxe completa, consulte CREATE DATABASE.

Verifique o resultado:

mysql> SHOW CREATE DATABASE `db1`;
+----------+--------------------------------------------------------------------------------------------------------------------+
| DATABASE | CREATE DATABASE                                                                                                    |
+----------+--------------------------------------------------------------------------------------------------------------------+
| db1      | CREATE DATABASE `db1` /* MODE = 'auto' LOCALITY = "dn=polardbx-ng28-dn-0,polardbx-ng28-dn-1,polardbx-ng28-dn-2" */ |
+----------+--------------------------------------------------------------------------------------------------------------------+
1 row in set (0.04 sec)

mysql> SHOW DS;
+----+--------------------+--------------------+---------------------------------+----------------------+---------+
| ID | STORAGE_INST_ID    | DB                 | GROUP                           | PHY_DB               | MOVABLE |
+----+--------------------+--------------------+---------------------------------+----------------------+---------+
|  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 rows in set (0.04 sec)
Os locais de armazenamento de um banco de dados devem incluir o nó de dados com número de série 0 ( dn-0 ). Essa restrição não se aplica a tabelas ou partições individuais.

Distribuir tabelas não particionadas uniformemente entre os nós

Quando há muitas tabelas não particionadas, elas usam como padrão o dn-0, o que cria um desequilíbrio de armazenamento. Use balance_single_table=on para permitir que o PolarDB-X as distribua automaticamente com base no número de tabelas não particionadas e na quantidade de dados em cada nó de dados.

CREATE TABLE t_sgl1 (
  `id` bigint(11) NOT NULL AUTO_INCREMENT BY GROUP,
  `order_id` varchar(20) DEFAULT NULL,
  `buyer_id` varchar(20) DEFAULT NULL,
  `seller_id` varchar(20) DEFAULT NULL,
  `order_snapshot` longtext DEFAULT NULL,
  `order_detail` longtext DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `l_i_order` (`order_id`)
) SINGLE locality = 'balance_single_table=on';

CREATE TABLE t_sgl2 (
  `id` bigint(11) NOT NULL AUTO_INCREMENT BY GROUP,
  `order_id` varchar(20) DEFAULT NULL,
  `buyer_id` varchar(20) DEFAULT NULL,
  `seller_id` varchar(20) DEFAULT NULL,
  `order_snapshot` longtext DEFAULT NULL,
  `order_detail` longtext DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `l_i_order` (`order_id`)
) SINGLE locality = 'balance_single_table=on';

CREATE TABLE t_sgl3 (
  `id` bigint(11) NOT NULL AUTO_INCREMENT BY GROUP,
  `order_id` varchar(20) DEFAULT NULL,
  `buyer_id` varchar(20) DEFAULT NULL,
  `seller_id` varchar(20) DEFAULT NULL,
  `order_snapshot` longtext DEFAULT NULL,
  `order_detail` longtext DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `l_i_order` (`order_id`)
) SINGLE locality = 'balance_single_table=on';

CREATE TABLE t_sgl4 (
  `id` bigint(11) NOT NULL AUTO_INCREMENT BY GROUP,
  `order_id` varchar(20) DEFAULT NULL,
  `buyer_id` varchar(20) DEFAULT NULL,
  `seller_id` varchar(20) DEFAULT NULL,
  `order_snapshot` longtext DEFAULT NULL,
  `order_detail` longtext DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `l_i_order` (`order_id`)
) SINGLE locality = 'balance_single_table=on';

Para a sintaxe completa, consulte CREATE TABLE (modo AUTO).

Verifique a topologia para confirmar que cada tabela foi alocada em um nó diferente:

mysql> SHOW TOPOLOGY `t_sgl1`;
+----+------------------+--------------------+----------------+-------------+--------------------+
| ID | GROUP_NAME       | TABLE_NAME         | PARTITION_NAME | PHY_DB_NAME | DN_ID              |
+----+------------------+--------------------+----------------+-------------+--------------------+
|  1 | DB1_P00001_GROUP | t_sgl1_92mv_00000  | p1             | db1_p00001  | polardbx-ng28-dn-1 |
+----+------------------+--------------------+----------------+-------------+--------------------+

mysql> SHOW TOPOLOGY `t_sgl2`;
+----+------------------+--------------------+----------------+-------------+--------------------+
| ID | GROUP_NAME       | TABLE_NAME         | PARTITION_NAME | PHY_DB_NAME | DN_ID              |
+----+------------------+--------------------+----------------+-------------+--------------------+
|  1 | DB1_P00002_GROUP | t_sgl2_87fg_00000  | p1             | db1_p00002  | polardbx-ng28-dn-2 |
+----+------------------+--------------------+----------------+-------------+--------------------+

mysql> SHOW TOPOLOGY `t_sgl3`;
+----+------------------+--------------------+----------------+-------------+--------------------+
| ID | GROUP_NAME       | TABLE_NAME         | PARTITION_NAME | PHY_DB_NAME | DN_ID              |
+----+------------------+--------------------+----------------+-------------+--------------------+
|  1 | DB1_P00002_GROUP | t_sgl3_64uj_00000  | p1             | db1_p00001  | polardbx-ng28-dn-1 |
+----+------------------+--------------------+----------------+-------------+--------------------+

mysql> SHOW TOPOLOGY `t_sgl4`;
+----+------------------+--------------------+----------------+-------------+--------------------+
| ID | GROUP_NAME       | TABLE_NAME         | PARTITION_NAME | PHY_DB_NAME | DN_ID              |
+----+------------------+--------------------+----------------+-------------+--------------------+
|  1 | DB1_P00001_GROUP | t_sgl4_71mb_00000  | p1             | db1_p00002  | polardbx-ng28-dn-2 |
+----+------------------+--------------------+----------------+-------------+--------------------+

As quatro tabelas são distribuídas automaticamente entre dn-1 e dn-2.

Crie uma tabela lógica com LOCALITY

Fixe os dados de uma tabela lógica em nós específicos para isolá-la de outras tabelas no mesmo banco de dados. O LOCALITY é compatível com tabelas não particionadas e tabelas que usam particionamento RANGE, HASH ou LIST.

CREATE TABLE t_order (
  `id` bigint(11) NOT NULL AUTO_INCREMENT BY GROUP,
  `order_id` varchar(20) DEFAULT NULL,
  `buyer_id` varchar(20) DEFAULT NULL,
  `seller_id` varchar(20) DEFAULT NULL,
  `order_snapshot` longtext DEFAULT NULL,
  `order_detail` longtext DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `l_i_order` (`order_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
  locality = 'dn=polardbx-ng28-dn-1,polardbx-ng28-dn-2';

Verifique o resultado:

mysql> SHOW CREATE TABLE `t_order`;
+---------+---------------------------------------------------------------------------------------+
| TABLE   | CREATE TABLE                                                                          |
+---------+---------------------------------------------------------------------------------------+
| t_order | CREATE TABLE `t_order` (
	`id` bigint(11) NOT NULL AUTO_INCREMENT,
	`order_id` varchar(20) DEFAULT NULL,
	`buyer_id` varchar(20) DEFAULT NULL,
	`seller_id` varchar(20) DEFAULT NULL,
	`order_snapshot` longtext,
	`order_detail` longtext,
	PRIMARY KEY (`id`),
	INDEX `l_i_order` (`order_id`)
) ENGINE = InnoDB DEFAULT CHARSET = utf8
/* LOCALITY='dn=polardbx-ng28-dn-1,polardbx-ng28-dn-2' */ |
+---------+---------------------------------------------------------------------------------------+
1 row in set (0.05 sec)

mysql> SHOW TOPOLOGY `t_order`;
+----+------------------+--------------------+----------------+-------------+--------------------+
| 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 rows in set (0.15 sec)

Defina LOCALITY por partição

Especifique um nó de dados para cada partição a fim de direcionar os dados para um armazenamento dedicado com base na lógica de negócios. Por exemplo, armazene partições de alta prioridade em um nó específico.

O exemplo a seguir direciona p1 (Xangai) e p2 (Pequim) para dn-2 e distribui as partições restantes entre dn-0 e dn-1.

CREATE TABLE orders_region (
  order_id int AUTO_INCREMENT PRIMARY KEY,
  customer_id int,
  country varchar(64),
  city varchar(64),
  order_time datetime NOT NULL
)
PARTITION BY LIST COLUMNS(country, city)
(
  PARTITION p1 VALUES IN (('China','Shanghai')) LOCALITY = 'dn=polardbx-ng28-dn-2',
  PARTITION p2 VALUES IN (('China','Beijing'))  LOCALITY = 'dn=polardbx-ng28-dn-2',
  PARTITION p3 VALUES IN (('China','Hangzhou')),
  PARTITION p4 VALUES IN (('China','Nanjing')),
  PARTITION p5 VALUES IN (('China','Guangzhou')),
  PARTITION p6 VALUES IN (('China','Shenzhen')),
  PARTITION p7 VALUES IN (('China','Wuhan')),
  PARTITION p8 VALUES IN (('America','New York'))
) LOCALITY = 'dn=polardbx-ng28-dn-0,polardbx-ng28-dn-1';

Verifique a topologia:

mysql> 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 rows in set (0.25 sec)

As partições p1 e p2 estão em dn-2; as demais estão distribuídas entre dn-0 e dn-1.

Os nós de dados especificados para partições devem pertencer ao conjunto de nós de dados do banco de dados. Eles não precisam constar no LOCALITY no nível de tabela.

Alterar LOCALITY

Escolha o nível certo para atualizar

Alvo da alteração

Comando

Aciona migração de dados

Grupo de tabelas

ALTER TABLEGROUP ... SET LOCALITY

Sim (assíncrono)

Grupo de partições

ALTER TABLEGROUP ... SET PARTITIONS ... LOCALITY

Sim (assíncrono)

Tabela individual

ALTER TABLE ... PARTITION BY ... LOCALITY

Sim

Alterar o LOCALITY de um grupo de tabelas

ALTER TABLEGROUP identifier SET LOCALITY = locality_option

-- locality_option:
--   'dn=storage_inst_id_list'
--   ''

Exemplo: altere o LOCALITY de tg3 (que contém orders_region):

ALTER TABLEGROUP `tg3` SET LOCALITY = 'dn=polardbx-ng28-dn-0';

Após a alteração, o PolarDB-X atualiza imediatamente os metadados e inicia uma tarefa de rebalanceamento em segundo plano. Acompanhe o progresso da migração:

SELECT * FROM information_schema.ddl_plan WHERE table_schema = 'db1';

Saída de exemplo:

+----+---------------------+---------------------+--------------+------------------------------------------------------------------+---------+-----------+----------+-------------+--------+--------+---------------------+---------------------+----------------+
| 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 | SUCCESS | REBALANCE |      100 |           0 |        |        | 2022-05-24 14:37:58 | 2022-05-24 14:38:11 | tablegroup:tg3 |
+----+---------------------+---------------------+--------------+------------------------------------------------------------------+---------+-----------+----------+-------------+--------+--------+---------------------+---------------------+----------------+

A coluna progress mostra a porcentagem de conclusão; state=SUCCESS indica que a migração foi concluída.

Verifique a topologia final:

mysql> 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_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 rows in set (0.17 sec)

As partições p1 e p2 mantiveram seu nó original (dn-2) porque tinham LOCALITY explícito definido na criação. Todas as outras partições foram movidas para dn-0.

Alterar o LOCALITY de um grupo de partições

Atualize a atribuição de nó de uma única partição sem afetar as outras partições.

ALTER TABLEGROUP identifier SET PARTITIONS part_name LOCALITY = locality_option

-- locality_option:
--   'dn=storage_inst_id_list'
--   ''

Exemplo: mova a partição p3 de orders_region (no grupo de tabelas tg3) para dn-1:

ALTER TABLEGROUP `tg3` SET PARTITIONS p3 LOCALITY = 'dn=polardbx-ng28-dn-1';

Verifique:

mysql> 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_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 rows in set (0.11 sec)

Alterar o LOCALITY de uma tabela

Para remover o LOCALITY balance_single_table=on de uma tabela não particionada e convertê-la em uma tabela particionada, limpe explicitamente o LOCALITY durante o reparticionamento:

ALTER TABLE t_sgl1 PARTITION BY HASH(ID) PARTITIONS 32 LOCALITY = "";

Para alterar tanto o particionamento quanto a atribuição de nó simultaneamente:

ALTER TABLE t_sgl1 PARTITION BY HASH(ID) PARTITIONS 8 LOCALITY = "dn=dn1";
Importante

Alterar o LOCALITY de uma tabela aciona a migração de dados.

Como as operações de partição afetam o LOCALITY

O modo AUTO suporta ALTER TABLEGROUP e outras operações de modificação de partição. Para obter detalhes, consulte ALTER TABLEGROUP e Alterar o tipo e a regra de particionamento de uma tabela.

Após uma modificação de partição, novos grupos de partições e grupos de tabelas herdam o valor original de LOCALITY. As operações a seguir são exceções em que o LOCALITY é alterado:

Operação

Objeto

LOCALITY após a operação

Alterar a estratégia de particionamento

Tabela

Inalterado

Alterar o tipo de tabela

Tabela

Inalterado apenas ao converter uma tabela não particionada em uma tabela particionada. Todas as outras alterações de tipo limpam o LOCALITY.

Migrar partições

Grupo de partições

Inalterado

Mesclar partições

Grupo de partições

Herdado apenas se todas as partições mescladas compartilharem o mesmo valor de LOCALITY; caso contrário, é limpo

Dividir uma partição

Grupo de partições

Inalterado

Dividir uma partição por valor quente

Grupo de partições

Limpo

Extrair dados quentes de uma partição

Grupo de partições

Limpo

Exclua uma partição

Grupo de partições

Adicionar uma partição

Grupo de partições

Inalterado

Modificar partições (particionamento LIST)

Grupo de partições

Inalterado

Renomear uma partição

Grupo de partições

Inalterado

Próximos passos