Todos os produtos
Search
Central de documentação

PolarDB:Instruções de uso

Última atualização: Sep 02, 2026

Este tópico descreve como criar e usar tabelas particionadas de cluster multi-master.

Informações básicas

As tabelas particionadas de cluster multi-master do PolarDB for MySQL dividem automaticamente os dados em vários shards físicos dentro de um cluster, conforme regras de distribuição predefinidas. Assim, múltiplos nós de leitura e escrita compartilham a carga de trabalho da aplicação.

Com a divisão horizontal, o PolarDB escala horizontalmente a capacidade de processamento dos bancos de dados. Além disso, as tabelas particionadas de cluster multi-master aproveitam a alocação sob demanda de recursos do armazenamento compartilhado, melhorando a utilização dos recursos.

Escopo de aplicação

  • A série de produtos do cluster PolarDB for MySQL é Multi-master Cluster (Limitless) Edition e a versão do kernel é 8.0.2.

  • Uma conta privilegiada foi criada. Para mais informações, consulte Crie e gerencie contas de banco de dados.

  • Conexão estabelecida com o cluster de banco de dados. Para mais informações, consulte Connect to a cluster.

Instruções DDL

CREATE DATABASE

A instrução CREATE DATABASE cria um banco de dados e permite especificar seus atributos padrão, como conjunto de caracteres e collation. A sintaxe é totalmente compatível com o MySQL. Adicionalmente, use DIST_DB={'Y' | 'N'} para indicar se o banco de dados criado suporta tabelas particionadas de cluster multi-master no modo de sharding de banco de dados. O valor padrão é 'N'.

Nota

Atualmente, as tabelas particionadas de cluster multi-master não suportam a conversão de um banco de dados comum para um banco de dados com o atributo DIST_DB.

Sintaxe

CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name
[create_option] ...
create_option: [DEFAULT] {
CHARACTER SET [=] charset_name
| COLLATE [=] collation_name
| ENCRYPTION [=] {'Y' | 'N'}
| DIST_DB [=] {'Y' | 'N'}
}

Exemplos

Crie um banco de dados chamado test1 e permita a criação de tabelas particionadas de cluster multi-master nesse banco de dados.

CREATE DATABASE test1 DIST_DB='Y';

CREATE TABLE

Modo de sharding de banco de dados

A instrução CREATE TABLE cria tabelas. Em um banco de dados marcado como DIST_DB='Y', utilize DBDISTRIBUTION para especificar o método de distribuição das tabelas particionadas de cluster multi-master. Se o número de shards não for definido explicitamente, o sistema o determinará automaticamente com base na configuração do cluster.

Sintaxe

CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
    (create_definition,...)
    [table_options]
    [dbdistribution_options]

dbdistribution_options:
    DBDISTRIBUTION BY
        { [LINEAR] HASH(expr)
        | [LINEAR] KEY [ALGORITHM={1 | 2}] (column_list)
        | RANGE{(expr) | COLUMNS(column_list)}
        | LIST{(expr) | COLUMNS(column_list)} }
    [(dbdistribution_definition [, dbdistribution_definition] ...)]

dbdistribution_definition:
    DBDISTRIBUTION distribution_name
        [VALUES
            {LESS THAN {(expr | value_list) | MAXVALUE}
            |
            IN (value_list)}]
        [[STORAGE] ENGINE [=] engine_name]
        [COMMENT [=] 'string' ]
        [DATA DIRECTORY [=] 'data_dir']
        [INDEX DIRECTORY [=] 'index_dir']
        [MAX_ROWS [=] max_number_of_rows]
        [MIN_ROWS [=] min_number_of_rows]
        [TABLESPACE [=] tablespace_name]

Exemplos:

  • Tabela única regular

    CREATE database test;
    CREATE TABLE t1(
     id bigint NOT NULL, 
     name varchar(30), 
     PRIMARY key(id)
    );
  • Tabelas particionadas multi-master com suporte ao modo de sharding de banco de dados

    Uso de função hash para divisão

    Crie uma tabela particionada de cluster multi-master e utilize a coluna id para divisão por hash. Os shards de dados são distribuídos entre os nós de leitura e escrita do cluster.

    CREATE TABLE dist1(
     id bigint NOT NULL, 
     c1 int, 
     c2 varchar(30), 
     PRIMARY key(id)
    ) dbdistribution BY hash(id);

    Sharding LIST

    O tipo list consiste em uma coleção de listas de valores de enumeração, atendendo aos requisitos de sharding por enumeração. No sharding list, utiliza-se DBDISTRIBUTION BY LIST(expr) para definição, onde expr é a abreviação de expressão e representa o valor de uma coluna ou uma expressão baseada nesse valor. É necessário que expr retorne um valor inteiro. Em seguida, defina cada shard com VALUES IN (value_list), sendo value_list uma lista de valores inteiros separados por vírgulas.

    CREATE TABLE t1 (
        id INT NOT NULL,
        store_id INT,
        partition_no INT,
        PRIMARY key(id, partition_no)
    ) DBDISTRIBUTION BY LIST(partition_no) (
      DBDISTRIBUTION a VALUES IN (1),
      DBDISTRIBUTION b VALUES IN (2)
    );

    Sharding LIST-COLUMNS

    O sharding list column assemelha-se muito ao sharding list e é definido por DBDISTRIBUTION BY LIST COLUMNS(column_list), onde column_list pode conter um ou mais nomes de colunas em vez de expressões. Na prática, columns() não aceita outras expressões além de nomes de colunas. O sharding list columns não se limita mais a colunas inteiras. Os tipos aplicáveis incluem:

    • Todos os tipos inteiros: TINYINT, SMALLINT, MEDIUMINT, INT (INTEGER) e BIGINT.

    • Outros tipos numéricos: DECIMAL e FLOAT, por exemplo, não são suportados.

    • Tipos de data: DATE e DATETIME.

    • Tipos de string: CHAR, VARCHAR, BINARY e VARBINARY. TEXT e BLOB não são suportados.

    CREATE TABLE t3 (
        id INT NOT NULL,
        store_id INT,
        partition_no varchar(20),
        PRIMARY key(id, partition_no)
    ) DBDISTRIBUTION BY LIST COLUMNS (partition_no) (
      DBDISTRIBUTION a values in ('id_1'),
      DBDISTRIBUTION b values in ('id_2')
    );

ALTER TABLE

A sintaxe comum do MySQL para ALTER TABLE é suportada. Tabelas particionadas de cluster multi-master não permitem modificar regras de distribuição nem executar certas operações que exigem reorganização de shards. Para limites específicos, consulte os limites de desenvolvimento neste tópico.

CREATE INDEX

A sintaxe comum do MySQL para CREATE INDEX é suportada. Ao criar uma chave primária ou índice único, o índice deve conter todas as chaves de distribuição.

Consultas distribuídas

Tabelas particionadas de cluster multi-master suportam consultas de shard único e entre shards. Para consultas somente leitura entre shards, o sistema combina a capacidade de consulta distribuída com Global read-only nodes para executá-las. O comportamento real depende da configuração do cluster e do escopo de instruções SQL suportadas.

Colunas de incremento automático globais

Tabelas particionadas de cluster multi-master suportam sequências de incremento automático globalmente únicas. Quando vários nós de leitura e escrita gravam simultaneamente, podem ocorrer lacunas nos valores de incremento automático, sem garantia de que sejam consecutivos ou estritamente monotônicos crescentes. Ao projetar a lógica de negócios, não dependa da continuidade dos valores de incremento automático.

CREATE TABLE t1( id int NOT NULL auto_increment, c1 int, c2 int, PRIMARY key(id, c1)) dbdistribution BY RANGE (c1) ( dbdistribution p0 VALUES less than (100), dbdistribution p1 VALUES less than (1000), dbdistribution p2 VALUES less than (10000), dbdistribution p3 VALUES less than (20000) );
Query OK, 0 rows affected (0.26 sec)

INSERT INTO t1 (c1, c2) VALUES (1, 1);
Query OK, 1 row affected (0.04 sec)

Limites

Os seguintes limites aplicam-se apenas a tabelas particionadas de cluster multi-master:

Operação

Restrição

Modificação de regras ou chaves de distribuição

Não suportado. Planeje adequadamente as chaves de distribuição ao criar tabelas.

Operações de manutenção de shards

Não há suporte para execução direta de operações como adicionar, excluir, mesclar ou reorganizar shards.

Chaves primárias e índices únicos

Devem conter todas as chaves de distribuição.

Chaves estrangeiras e alguns índices especiais

Atualmente não suportados. Verifique a compatibilidade de SQL antes de criar tabelas ou alterar estruturas de tabela.

Operações relacionadas a tablespaces e diretórios de dados

Atualmente não suportadas.