Pular para o conteúdo

Fóruns Banco de dados Oracle sequence auto_incremento ajuda sequence auto_incremento ajuda

#98446
burga
Participante

    No comando para criar uma seqüência, existe uma cláusula cache N onde N indica a quantidade de números da seqüência que serão carregadas na memória (queimadas) a cada vez que a seqüência for chamada em uma sessão.

    Por exemplo:

    Imagine que você tem uma seqüência SEQ com CACHE 20 iniciando em 1.

    Em uma das sessões ativas no banco o comando SEQ.NEXTVAL é acionado.

    Então a sessão reserva na memória os números da seqüência de 1 a 20 para serem usados, sendo que o 1 é utilizado na primeira vez que você chamou o comando. Nas próximas vezes que o comando SEQ.NEXTVAL for acionado nesta sessão, o número será pego direto da memória (2, 3, 4…) e não do objeto do banco.

    Se uma segunda sessão chamar SEQ.NEXTVAL, esta reservará os números de 21 a 40, e assim por diante… Ou seja, se todos os números (de 1 a 40) forem utilizados, a seqüência será acessada somente 2 vezes e não 40 vezes (como seria com cache 1 ou nocache).

    Caso as sessões não usem todos os números, estes serão perdidos… Mas se janelas de números vazias nas suas tabelas não são um problema, números perdidos das seqüências também não representam problemas…

    A única coisa que se deve atentar é em relação ao tamanho dos campos que receberão estes números, pois o crescimento dos valores será bem mais rápido do que utilizando 1 seqüência para cada tabela e com caches menores…