A Sequence é um objeto do Database que possibilita a geração de valores, normalmente com características de valores únicos. A utilização de sequences possibilita uma maior concorrência, evita problemas de performance e mantém a integridade dos números gerados (evitando a geração de duplicidades).
Características:
Os valores podem ser de qualquer data type com escala de zero: SMALLINT
, BIGINT
, INTEGER
e DECIMAL
;
- Os valores podem residir em cache para aumentar a performance;
- O contador de valores é recuperável, ou seja, é mantido em uma estrutura de logs que quando necessário pode ser recuperado.
Expressões usadas:
- NEXT VALUE expression: retorna o próximo valor para aquela sequence definida;
- PREVIOUS VALUE expression: retorna o mais recente valor gerado para aquela sequence.
Exemplos:
* Criando Sequence com parâmetros default:
* Criando Sequence com parâmetros:
- start with: informa com qual número será inicializado;
- increment by: qual vai ser o incremento pra o contador;
- maxvalue: qual o número máximo a ser atingido;
- nocycle: quando atingir o número máximo, a contagem não será reinicializada;
- cache: quantos números estarão em memória, otimizando a consulta.
Então teremos uma Sequence chamada db2admin.seq_cont01
começando o contador com o número 10, incremento de 1 em 1, número máximo de 200, sem ciclos e com 20 números em memória:
* Utilizando a Sequence para incluir valores em uma tabela:
* Consultando o valor atual da Sequence:
Saiba mais em:
Olá Alexandre,
No DB2 z/OS data sharing, o objeto SEQUENCE é compartilhado entre os seus vários membros, ou seja, todas as instâncias DB2 recebem números sequenciais da mesma fonte e, portanto, não há duplicidade considerando todas as instâncias participantes do grupo de banco de dados. NO DB2 LUW 9.7 e Purescale, funciona assim também seja em diversas instâncias em cluster no DB2 LUW 9.7 ou CF no DB2 purescale ?
Obrigado pela atenção.
Abel.
Olá Abel,
Não fiz um lab para este ponto. Como a tecnologia/conceito é baseda no DB2 zOS, com o lock manager centralizado; penso que esta integridade se mantenha também.
http://goo.gl/tKzKa
abs,
Alexandre
Olá Alexandre,
Obrigado pelo retorno.
Pelo que entendi em minhas pesquisas, parece que somente o Lock Manager, o GroupBuffferpool e as bases de dados em si sejam compartilhados mas os catálogos DB2 dos membros integrantes, onde está inserida a tabela SEQUENCES, não. Por favor, veja o slide 7 do link
https://www.spdug.org/med/SpDUGforum2011/PDF/B02_Oracle%20RAC%20vs%20DB2%20LUW%20pureScale.pdf
Obrigado pela atenção.
Abel