No MySQL, os valores de incremento automático são locais a cada nó. No PolarDB-X, o AUTO_INCREMENT gera valores globalmente únicos em todos os nós de computação. Essa diferença é essencial para bancos de dados distribuídos, pois vários nós processam inserções simultaneamente.
Para obter mais informações sobre os modos AUTO e DRDS, consulte
Bancos de dados no modo AUTO e no modo DRDS
.
Funcionamento
Ao definir uma coluna com AUTO_INCREMENT, o PolarDB-X cria uma sequência e a vincula a essa coluna. A cada linha inserida, a sequência gera o próximo valor globalmente único e o grava na coluna.
O tipo de sequência que o PolarDB-X cria depende do modo de particionamento do banco de dados:
Modo AUTO: sequência NEW
Modo DRDS: sequência GROUP
Para usar um tipo diferente de sequência, consulte Associar uma sequência à coluna de incremento automático em uma tabela.
Comportamento do INSERT
|
Cenário |
Comportamento |
|
Nenhum valor, |
O PolarDB-X gera automaticamente um valor globalmente único |
|
Valor explícito especificado |
O PolarDB-X usa o valor informado para a linha atual e gera valores subsequentes maiores que ele |
Propriedades da sequência por modo de banco de dados
Os dois tipos de sequência diferem na forma como garantem unicidade, ordenação e compatibilidade com o MySQL.
|
Propriedade |
Sequência NEW (modo AUTO) |
Sequência GROUP (modo DRDS) |
|
Unicidade |
Globalmente única |
Globalmente única |
|
Monotonicidade |
Crescente monotonicamente em nível global |
Crescente monotonicamente por nó de computação; sem garantia entre nós diferentes |
|
Continuidade dos valores |
Consecutiva (podem ocorrer lacunas após exceções ou reinicializações) |
Consecutiva dentro de uma sessão de conexão do nó de computação e durante o período de cache (podem ocorrer lacunas após exceções ou reinicializações) |
|
Compatibilidade com MySQL |
Total: todas as propriedades de incremento automático do MySQL |
Parcial: apenas unicidade; outros comportamentos de incremento automático do MySQL não têm suporte |