1
resposta

[Dúvida] Problema com salto na numeração de Id no SQL Server

Nas aulas do módulo 1 (Uso do banco de dados), ao executar a aplicação, percebi que houve um salto na numeração do Id, do número 1 para 1002. Por exemplo, na aula 10 (Incluindo Artista), em 8'23'' do vídeo. Após investigar, descobri que isso pode ser causado pelo comportamento de pré-alocação de valores de identidade do SQL Server, especialmente após reinicializações do serviço ou falhas, ou poderia estar relacionado ao cache de identidade (usado para melhorar o desempenho, mas pode causar saltos na numeração após reinicializações ou falhas). Gostaria de conhecer outros aspectos sobre essa falha e que soluções poderiam ser adotadas. A utilização do pacote Proxie pode amenizar esses efeitos indesejados?

1 resposta

Olá Henrique! Tudo certo?

Você está correto em sua investigação sobre o comportamento do SQL Server em relação à pré-alocação de valores de identidade.

Esse comportamento pode, de fato, causar saltos na numeração dos IDs, especialmente após reinicializações do serviço ou falhas, devido ao cache de identidade.

Para mitigar esse comportamento, existem algumas abordagens que você pode considerar:

  1. Desabilitar o Cache de Identidade: Uma solução é desabilitar o cache de identidade. No entanto, é importante notar que isso pode impactar o desempenho. Para desabilitar, você pode configurar a propriedade IDENTITY_CACHE no SQL Server. O comando seria algo assim:

    ALTER DATABASE SCOPED CONFIGURATION SET IDENTITY_CACHE = OFF;
    
  2. Utilizar GUIDs como Chave Primária: Outra abordagem é usar GUIDs (Globally Unique Identifiers) em vez de valores de identidade para as chaves primárias. Isso elimina o problema de saltos, mas pode introduzir complexidade adicional na sua aplicação e no desempenho do banco de dados.

  3. Gerenciamento Manual de IDs: Você também pode optar por gerenciar manualmente os IDs, embora isso não seja recomendado na maioria dos casos devido à complexidade e aos riscos de colisões de IDs.

Quanto ao uso de pacotes como o Proxie, eles geralmente não estão relacionados diretamente com a gestão de IDs no banco de dados. O Proxie é mais utilizado para interceptação de chamadas e criação de proxies dinâmicos, e não para gerenciar o comportamento de identidade do SQL Server.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.