Todos os produtos
Search
Central de documentação

PolarDB:Bancos de dados nos modos AUTO e DRDS

Última atualização: Aug 27, 2026

Este tópico apresenta e compara os bancos de dados nos modos AUTO e DRDS.

Modos de banco de dados do PolarDB-X

A partir da versão 5.4.13 do PolarDB-X, é possível criar um banco de dados no modo AUTO, também conhecido como banco de dados com particionamento automático. Esse modo oferece suporte ao particionamento automático, permitindo criar tabelas sem especificar uma chave de partição; os dados são distribuídos automática e uniformemente pelo cluster. Também é possível utilizar a sintaxe padrão de particionamento do MySQL para particionar manualmente as tabelas. Isso facilita o uso dos recursos de bancos de dados distribuídos, como distribuição transparente, auto scaling e gerenciamento de partições.

Bancos de dados em versões do PolarDB-X anteriores à 5.4.13 operam no modo DRDS. Esse modo não suporta particionamento automático. Ao criar uma tabela, use a sintaxe de sharding específica do DRDS para definir uma chave de sharding. Caso contrário, o sistema criará uma tabela não particionada.

O PolarDB-X 5.4.13 e versões posteriores suportam bancos de dados tanto no modo AUTO quanto no modo DRDS. Ambos podem coexistir na mesma instância.

Observações de uso

  • Para criar um banco de dados no modo AUTO, especifique explicitamente MODE='AUTO' na instrução CREATE DATABASE.

  • Se você omitir o parâmetro MODE na instrução CREATE DATABASE, o PolarDB-X criará um banco de dados no modo DRDS por padrão.

  • Em um banco de dados no modo AUTO, não é possível usar a sintaxe de sharding do DRDS para criar tabelas com sharding. Crie apenas tabelas particionadas.

  • Em um banco de dados no modo DRDS, não é possível usar a sintaxe de particionamento para criar uma tabela particionada. Crie apenas tabelas com sharding.

  • Clusters da Standard Edition não suportam a criação de bancos de dados no modo AUTO.

Especifique um modo de banco de dados

Ao criar um banco de dados no PolarDB-X, utilize o parâmetro MODE para definir o modo desejado.

Nota

Não é possível alterar o modo do banco de dados após a criação.

Parâmetro

Valor

Descrição

Criação de banco de dados

Criação de tabela

MODE

'AUTO'

Crie um banco de dados no modo AUTO.

Exemplo:

CREATE DATABASE auto_db MODE='AUTO';

Para mais informações, consulte CREATE DATABASE.

As tabelas criadas em um banco de dados no modo AUTO são chamadas de tabelas particionadas. Utilize a sintaxe padrão do MySQL. Para mais informações, consulte MySQL partitioned table syntax.

'DRDS' (padrão)

Nota

Se você não especificar o parâmetro MODE, o sistema criará um banco de dados no modo DRDS por padrão.

Crie um banco de dados no modo DRDS.

Exemplos:

  • CREATE DATABASE drds_db MODE='DRDS';
  • CREATE DATABASE drds_db;

Para mais informações, consulte CREATE DATABASE.

As tabelas criadas em um banco de dados no modo DRDS são chamadas de tabelas com sharding. Para mais informações, consulte DRDS sharded table syntax.

Particionamento automático e particionamento manual

Particionamento automático

O particionamento automático elimina a necessidade de definir qualquer configuração de partição, como chave ou política de particionamento, durante a criação da tabela. O PolarDB-X seleciona automaticamente uma chave de partição e particiona horizontalmente a tabela e seus índices. Bancos de dados no modo AUTO suportam particionamento automático, enquanto bancos de dados no modo DRDS não oferecem esse recurso.

Veja o exemplo a seguir.

Utilize a sintaxe padrão do MySQL para criar uma tabela chamada tb sem nenhuma definição de particionamento:

CREATE TABLE tb(a INT, b INT, PRIMARY KEY(a));
  • Em um banco de dados no modo DRDS, essa instrução DDL cria uma tabela não particionada.

    Execute a instrução SHOW para visualizar a instrução completa de criação da tabela:

    SHOW FULL CREATE TABLE tb \G
    *************************** 1. row ***************************
           Table: tb
    Create Table: CREATE TABLE `tb` (
        `a` int(11) NOT NULL,
        `b` int(11) DEFAULT NULL,
        PRIMARY KEY (`a`)
    ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4
    1 row in set (0.02 sec)
  • Em um banco de dados no modo AUTO, essa instrução DDL cria uma tabela particionada. Execute a instrução SHOW para visualizar a instrução completa de criação da tabela:

    SHOW FULL CREATE TABLE tb \G
    *************************** 1. row ***************************
           TABLE: tb
    CREATE TABLE: CREATE PARTITION TABLE `tb` (
        `a` int(11) NOT NULL,
        `b` int(11) DEFAULT NULL,
        PRIMARY KEY (`a`)
    ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4
    PARTITION BY KEY(`a`)
    PARTITIONS 16
    1 row in set (0.01 sec)

O recurso de particionamento automático do PolarDB-X permite que sua aplicação aproveite facilmente as capacidades de um banco de dados distribuído, como auto scaling e gerenciamento de partições.

Particionamento manual

No particionamento manual, especifique explicitamente as definições de partição, como chave e política de particionamento, ao criar uma tabela. A sintaxe de criação de tabelas para particionamento manual difere entre bancos de dados nos modos AUTO e DRDS.

  • Banco de dados no modo AUTO: Utilize a sintaxe padrão do MySQL para criar uma tabela particionada. Este modo suporta diversas políticas de particionamento, incluindo HASH, RANGE e LIST.

    No exemplo abaixo, a sintaxe PARTITION BY HASH(a) define a coluna a como chave de partição e HASH como política de particionamento para a tabela tb:

    CREATE TABLE tb (a INT, b INT, PRIMARY KEY(a))
        -> PARTITION by HASH(a) PARTITIONS 4;
    Query OK, 0 rows affected (0.83 sec)
    
    SHOW FULL CREATE TABLE tb\G
    *************************** 1. row ***************************
           TABLE: tb
    CREATE TABLE: CREATE TABLE `tb` (
        `a` int(11) NOT NULL,
        `b` int(11) DEFAULT NULL,
        PRIMARY KEY (`a`)
    ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4
    PARTITION BY KEY(`a`)
    PARTITIONS 4
    1 row in set (0.02 sec)
  • Banco de dados no modo DRDS: Utilize a sintaxe de sharding específica do DRDS para criar uma tabela com sharding. Este modo suporta apenas a política HASH.

    No exemplo abaixo, a sintaxe DBPARTITION BY HASH(a) TBPARTITION BY HASH(a) define a coluna a como chave de sharding para a tabela tb:

    CREATE TABLE tb (a INT, b INT, PRIMARY KEY(a))
        -> DBPARTITION by HASH(a)
        -> TBPARTITION by HASH(a)
        -> TBPARTITIONS 4;
    Query OK, 0 rows affected (1.16 sec)
    
    SHOW FULL CREATE TABLE tb\G
    *************************** 1. row ***************************
           Table: tb
    Create Table: CREATE TABLE `tb` (
        `a` int(11) NOT NULL,
        `b` int(11) DEFAULT NULL,
        PRIMARY KEY (`a`)
    ) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4  dbpartition by hash(`a`) tbpartition by hash(`a`) tbpartitions 4
    1 row in set (0.02 sec)

Comparação de algoritmos de roteamento: tabelas particionadas versus tabelas com sharding

A principal diferença entre tabelas particionadas e tabelas com sharding reside no algoritmo de roteamento.

  • O algoritmo de roteamento de uma tabela com sharding aplica uma operação de módulo sobre o valor de hash dividido pelo número de shards físicos da tabela. Se você alterar o número de partições (por exemplo, de 4 para 5), todos os dados precisarão ser reprocessados com hash. Por isso, tabelas com sharding no modo DRDS não suportam modificações no nível de partição.

  • O algoritmo de roteamento padrão para uma tabela particionada é um algoritmo de hash consistente baseado em intervalos. Esse algoritmo suporta nativamente alterações de partição por meio de operações como divisão e mesclagem, sem a necessidade de recalcular o hash de todos os dados. Consequentemente, tabelas particionadas no modo AUTO permitem modificações no nível de partição.

Comparação de recursos

Em comparação com um banco de dados no modo DRDS, um banco de dados no modo AUTO oferece novos recursos, como particionamento automático, divisão de dados quentes, agendamento de partições e Time to Live (TTL). Além disso, proporciona otimizações significativas na experiência distribuída em áreas como gerenciamento de partições e modificação de esquemas de particionamento.

A tabela a seguir compara os principais recursos dos bancos de dados nos modos AUTO e DRDS.

Recurso

Modo AUTO

Modo DRDS

Distribuição transparente

Particionamento padrão por chave primária

Suportado. Se nenhum esquema de particionamento for definido durante a criação da tabela, o PolarDB-X particiona automaticamente a tabela pela chave primária.

Não suportado.

Índice secundário global (GSI) padrão

Suportado. Se nenhuma coluna de particionamento for especificada para um índice, o PolarDB-X o particiona automaticamente pelas colunas do índice.

Não suportado.

Balanceamento de carga

Suportado.

Não suportado.

Distribuição de dados quentes

Suportado.

Não suportado.

Política de particionamento

Particionamento por hash e por chave

Suportado. Utiliza um algoritmo de hash consistente e suporta distribuição de dados quentes.

Suportado. Utiliza um algoritmo de roteamento baseado em módulo, mas não suporta distribuição de dados quentes.

Particionamento por intervalo e por colunas de intervalo

Suportado, incluindo suporte para distribuição de dados quentes.

Não suportado.

Particionamento por lista e por colunas de lista

Suportado.

Não suportado.

Chave de partição vetorial

Suportado. Uma chave de partição pode ser um vetor, por exemplo, PARTITION BY KEY(c1,c2,c3).

Não suportado.

Collation da chave de partição

Suportado.

Não suportado.

Tabela não particionada e tabela de broadcast

Suportado.

Suportado.

Gerenciamento de partições

Criação, exclusão e modificação de partições

Suportado.

Não suportado.

Divisão e mesclagem de partições

Suportado.

Não suportado.

Migração de partições

Suportado.

Não suportado.

Truncamento de partições

Suportado.

Não suportado.

Insights de partição

Em breve. Este recurso oferecerá suporte à análise automática de partições quentes.

Não suportado.

Modificação do esquema de particionamento

Alteração do tipo de tabela (conversão entre tabelas não particionadas, de broadcast e particionadas)

Suportado.

Suportado.

Alteração da definição de partição (incluindo contagem de partições, tipo de chave de partição e política de particionamento)

Suportado.

Suportado.

Auto scaling

Suspensão de escrita durante o dimensionamento

Não.

Sim (brevemente).

Permite outras operações DDL

Sim.

Não.

Localidade

Isolamento estático de armazenamento

Suportado. Especifique recursos de armazenamento físico ao criar bancos de dados, tabelas e partições.

Suportado. Especifique recursos de armazenamento físico ao criar bancos de dados e tabelas.

Isolamento dinâmico de armazenamento

Suportado. Ajuste dinamicamente os recursos de armazenamento físico para bancos de dados e tabelas.

Não suportado.

Compatível com auto scaling

Sim.

Não.

Pruning de partição

Pruning de partição baseado em prefixos

Suportado.

Por exemplo, se você particionar uma tabela usando PARTITION BY KEY(a,b,c), a chave de partição vetorial usará as colunas a, b e c. Uma consulta com WHERE a=100 AND b=100 ou WHERE a=100 pode acionar o pruning de partição.

Não suportado.

Constant folding em expressões de cálculo

Suportado.

Por exemplo, o pruning de partição pode ser executado para uma condição com uma expressão de cálculo, como pk = POW(2, 4).

Não suportado. A condição da chave de partição deve ser uma constante, como pk = 123. Se a chave de partição fizer parte de uma expressão de cálculo como pk = POW(2, 4), o sistema realizará uma varredura completa da tabela.

Sensibilidade a maiúsculas/minúsculas e tratamento de espaços à direita no roteamento de partição

Suportado.

É possível especificar uma collation para a chave de partição a fim de determinar se o roteamento diferencia maiúsculas de minúsculas ou ignora espaços à direita.

Não suportado. Não há suporte para collation em colunas de partição. O algoritmo HASH diferencia maiúsculas de minúsculas e não ignora espaços à direita.

Pushdown de operação join

Suportado.

O pushdown de operação join não é afetado durante operações de partição, como divisão, mesclagem e migração.

Suportado.

Seleção de partição

Suportado.

É possível consultar uma partição específica usando a sintaxe de seleção de partição, por exemplo, SELECT * FROM tb PARTITIONS (p1).

Não suportado.

Time to Live (TTL)

Suportado.

Não suportado.

AUTO_INCREMENT

Suportado. Garante que os valores sejam globalmente únicos, monotonicamente crescentes e consecutivos.

Suportado. Garante que os valores sejam globalmente únicos, mas não assegura que sejam monotonicamente crescentes ou consecutivos.

Comparação de desempenho

Tabelas com sharding no modo DRDS e tabelas particionadas no modo AUTO utilizam algoritmos de roteamento diferentes. Para avaliar as diferenças de desempenho, realizamos benchmarks no PolarDB-X com Sysbench. Este teste mede o throughput (em consultas por segundo, ou QPS) para cada modo em vários cenários de teste do Sysbench.

Ambiente de teste

  • Especificação da instância PolarDB-X: polarx.x4.2xlarge.2e

    • Nó de computação (CN): 2 × (16 núcleos de CPU, 64 GB RAM)

    • Nó de dados (DN): 2 × (16 núcleos de CPU, 64 GB RAM)

  • Versão: 5.4.13-16415631

  • Configurações da tabela:

    • Tabela particionada:

      • 32 partições

      • Instrução de particionamento: partition by hash(id) partitions 32

      • Dados totais da tabela: 160 milhões de linhas

    • Tabela com sharding:

      • 32 shards de tabela física

      • Instrução de sharding: dbpartition by hash(id) tbpartition by hash(id) tbpartitions 16

      • Dados totais da tabela: 160 milhões de linhas

Cenários de teste

Os testes Sysbench utilizam os seguintes cenários:

  • oltp_point_select: Consultas point-select com condições de igualdade na chave de partição.

  • oltp_read_only: Uma mistura de point-select transacional e consultas de pequeno intervalo (por exemplo, usando BETWEEN) na chave de partição.

  • oltp_read_write: Uma mistura de point-select transacional, consultas de pequeno intervalo e escritas na chave de partição.

Resultados do teste

  • Embora o algoritmo de hash consistente usado pelas tabelas particionadas seja mais complexo que o hash baseado em módulo das tabelas com sharding, o throughput no cenário oltp_point_select é praticamente idêntico, sem degradação significativa de desempenho.

  • Nos cenários oltp_read_only e oltp_read_write, que envolvem varreduras de intervalo complexas, as tabelas particionadas alcançam um throughput geral aproximadamente 33% maior. Essa melhoria deve-se às otimizações avançadas de pruning de partição disponíveis no modo AUTO.

Perguntas frequentes

  • P1: Quando devo escolher o modo AUTO em vez do modo DRDS?

    R: Recomendamos o uso do modo AUTO tanto para novas aplicações quanto para aplicações migradas do PolarDB-X 1.0.

  • P2: No modo AUTO, devo usar particionamento automático ou manual ao criar tabelas?

    R: Durante a fase de testes, use o particionamento automático. Se posteriormente descobrir que sua carga de trabalho exige ajustes de desempenho, altere o método de particionamento da tabela usando uma instrução DDL (por exemplo, a instrução ALTER PARTITION). Caso tenha um conhecimento profundo dos padrões SQL específicos do seu negócio e das relações entre as tabelas, utilize o particionamento manual desde o início.

  • P3: Como faço para alternar um banco de dados do modo DRDS para o modo AUTO?

    R: Para versões de kernel 5.4.16 e posteriores, use qualquer um dos métodos a seguir. Para versões anteriores à 5.4.16, apenas o Método 2 e o Método 3 são suportados. Para verificar a versão da sua instância, consulte Visualize the engine version.

    • Método 1: A partir da versão 5.4.16, o kernel fornece a sintaxe CREATE DATABASE LIKE/AS, que permite converter um banco de dados do modo DRDS para o modo AUTO com um único comando. Para detalhes de uso, consulte Convert a DRDS mode database to an AUTO mode database.

    • Método 2: Crie um novo banco de dados no modo AUTO na instância de destino, crie as tabelas necessárias e use o Data Transmission Service (DTS) para sincronizar os dados do banco de dados original no modo DRDS para o novo banco de dados no modo AUTO.

    • Método 3: Use o comando mysqldump para exportar os dados do banco de dados original no modo DRDS (excluindo as instruções de criação de tabela). Em seguida, crie um novo banco de dados no modo AUTO, crie as tabelas e importe o arquivo de dados exportado usando o comando source.

  • P4: Qual é o número padrão de partições para o particionamento automático no modo AUTO?

    R: O número padrão de partições automáticas é calculado como: (Número de nós na criação da instância) × 8. Por exemplo, se uma instância for criada com 2 nós, o número padrão de partições será 2 × 8 = 16. Esse número permanece constante após a criação da instância e não é afetado pelo auto scaling, a menos que você ajuste manualmente o parâmetro correspondente.

  • P5: Posso ajustar manualmente o número padrão de partições automáticas?

    R: Sim. O parâmetro para o número padrão de partições é AUTO_PARTITION_PARTITIONS, que é um parâmetro no nível da instância. Portanto, alterar esse parâmetro afeta o número de partições automáticas para todas as novas tabelas criadas em qualquer banco de dados no modo AUTO dentro dessa instância. Observe que, se a contagem de partições de uma nova tabela diferir da das tabelas existentes, o pushdown de operação join entre elas poderá falhar, o que pode afetar a eficiência da consulta. Recomendamos ajustar manualmente a contagem de partições, se necessário. Para mais informações, consulte Modify table-level partitions (AUTO mode).