Todos os produtos
Search
Central de documentação

PolarDB:Visão geral

Última atualização: Jun 28, 2026

As sequências do PolarDB-X geram valores numéricos globalmente únicos e sequencialmente incrementais do tipo MySQL BIGINT (inteiros com sinal de 64 bits). Use-as como valores de coluna de chave primária ou de chave de índice único.

O PolarDB-X oferece duas formas de usar sequências:

  • Sequência explícita: crie e gerencie uma sequência com instruções DDL e chame SELECT seq.nextval para recuperar valores (onde seq é o nome da sequência).

  • Sequência implícita: adicione o atributo AUTO_INCREMENT a uma coluna de chave primária. O PolarDB-X cria e mantém a sequência subjacente automaticamente. Consulte AUTO_INCREMENT.

Escolha um tipo de sequência

O PolarDB-X disponibiliza três tipos de sequência. Antes de analisar cada tipo, use esta tabela para escolher a opção mais adequada à sua carga de trabalho.

New sequence

Group sequence

Time sequence

Globally unique

Sim

Sim

Sim

Consecutive

Sim

Não

Não

Monotonically increasing

Sim

Não

Apenas no nível macro

Crescimento monotônico na mesma sessão

Sim

Sim

Sim

Tipos de dados suportados

Todos os tipos inteiros

Todos os tipos inteiros

Apenas BIGINT

Legibilidade

Alta

Alta

Baixa

Capacidade de unitização

Não

Sim

Não

Compromisso de desempenho

Depende do Global Meta Service (GMS); consome mais recursos do GMS

Alto desempenho; sem ponto único de falha

Desempenho excelente; sem armazenamento persistente de valores

Quando usar cada tipo:

  • New sequence — use em bancos de dados no modo AUTO com versão de kernel V5.4.14 ou posterior. Este é o tipo padrão quando nenhum outro é especificado.

  • Group sequence — use em bancos de dados no modo DRDS (padrão nesse modo) ou para aplicações multiunidade que exigem valores globalmente únicos em várias instâncias ou bancos de dados. Também serve como caminho de migração das group sequences do PolarDB-X 1.0.

  • Time sequence — use apenas ao migrar aplicações do PolarDB-X 1.0 que dependem de valores de sequência baseados em tempo.

Importante

As new sequences dependem do GMS e consomem mais recursos desse serviço do que os outros tipos. Se sua carga de trabalho não tolerar essa dependência, use uma group sequence.

Conceitos principais

Consecutivo — cada valor corresponde exatamente a n + 1 em relação ao valor anterior n. Se qualquer valor for ignorado, a sequência não será consecutiva.

Crescimento monotônico — cada valor é estritamente maior que o anterior.

Crescimento monotônico no nível macro, mas não monotônico no nível micro — os valores apresentam tendência geral de alta, porém não seguem uma ordem estrita em granularidade fina. Exemplo: 1, 3, 2, 4, 5, 7, 6, 8, ...

Capacidade de unitização — uma group sequence pode abranger múltiplas instâncias ou bancos de dados, divididos em unidades. Cada unidade ocupa um subconjunto não sobreposto do espaço da sequência, o que garante valores globalmente únicos em todas as unidades.

New sequences

Uma new sequence gera valores globalmente únicos, consecutivos e monotonicamente crescentes. Por padrão, os valores são números naturais que começam em 1.

Exemplo (valor inicial: 100.000):

100000, 100001, 100002, 100003, 100004, ..., 199999, 200000, 200001, 200002, 200003, ...

Requisitos de versão:

  • Versão de kernel V5.4.14 ou posterior: se nenhum tipo de sequência for especificado em um banco de dados no modo AUTO, o sistema cria uma new sequence por padrão.

  • Versão de kernel V5.4.17 ou posterior: suporta os parâmetros INCREMENT BY, MAXVALUE e CYCLE / NOCYCLE.

Para limites, consulte New sequences.

Group sequences

Uma group sequence gera valores numéricos naturais globalmente únicos. Os valores não precisam ser consecutivos nem monotonicamente crescentes.

Por padrão (sem especificação dos parâmetros UNIT COUNT ou INDEX), uma group sequence possui uma única unidade e valor inicial padrão de 100.001. Para criar uma group sequence multiunidade, defina UNIT COUNT com um valor maior que 1.

Funcionamento das sequências multiunidade:

  • A quantidade de unidades determina o espaço total da sequência.

  • Cada unidade é identificada por um parâmetro INDEX e possui um subconjunto não sobreposto do espaço da sequência.

  • Como duas unidades nunca compartilham o mesmo valor de INDEX, os valores gerados por unidades diferentes jamais colidem.

Motivo para valores não consecutivos: o PolarDB-X usa vários nós para gerar valores de group sequence. O sistema busca um segmento de valores do banco de dados por vez. Em cenários como desconexões de rede, nem todos os valores de um segmento são usados, e os valores não utilizados são descartados. Esse comportamento representa o compromisso necessário para garantir alta disponibilidade e ausência de ponto único de falha.

Exemplo (valor inicial especificado: 100.000; o valor inicial real pode ser diferente):

200001, 200002, 200003, 200004, 100001, 100002, 100003, 200005, 200006, ...

Neste exemplo, o valor inicial real é 200.001, e não 100.000, pois as group sequences não garantem o início exato no valor especificado. Os intervalos entre 200.004 e 100.001, bem como entre 100.003 e 200.005, representam lacunas de valores não utilizados.

Nota

Para limites, consulte Group sequences.

Time sequences

Um valor de time sequence codifica três componentes: timestamp, ID do nó e número de série. Os valores são globalmente únicos e crescem monotonicamente no nível macro. As atualizações não exigem leitura do banco de dados, pois o PolarDB-X armazena apenas o nome e o tipo da sequência, sem guardar o valor atual. Isso confere excelente desempenho às time sequences.

Exemplos de valores:

776668092129345536, 776668098018148352, 776668111578333184, 776668114812141568, ...

Restrições:

  • Os valores não são consecutivos.

  • Os parâmetros START WITH, INCREMENT BY, MAXVALUE, CYCLE e NOCYCLE não têm efeito sobre time sequences.

  • Se uma time sequence estiver associada a uma coluna autoincrementável, essa coluna deve ser do tipo BIGINT.