Una secuencia es una estructura para la generación de valores enteros
únicos. Sólo una sesión puede leer el siguiente valor y así obligarla a
incrementar. Este es un punto de la serialización, por lo que cada valor
generado será único.
Las secuencias son una valiosa herramienta para la generación de Llaves
Primarias. Muchas aplicaciones necesitan valores de Llave Primaria generadas
automáticamente. El mecanismo de secuencia es independiente de las tablas, y el
procesamiento de Commit y Rollback. Esto significa que una secuencia puede
emitir miles de valores únicos de un minuto, mucho más rápido que cualquier
otro método que implica la selección de una columna de una tabla,
actualización, y confirmación de un cambio. El numero se incrementa
consecutivamente en orden cada vez que una selección es realizada y el
numero incrementa globalmente no solo
dentro de una sesión.
Crear Secuencias
La sintaxis completa para crear una secuencia es la siguiente:
CREATE SEQUENCE [schema.]sequencename
[INCREMENT BY number]
[START WITH number]
[MAXVALUE number | NOMAXVALUE]
[MINVALUE number | NOMINVALUE]
[CYCLE | NOCYCLE]
[CACHE number
| NOCACHE]
[ORDER | NOORDER] ;
Para crear una secuencia es muy simple:
Opciones de Sequence
INCREMENT BY
|
¿Cuánto mayor (o menor) que el último número
emitido debe ser el siguiente número? El valor predeterminado es +1, pero
puede ser cualquier número positivo (o número negativo para una secuencia
descendente).
|
START WITH
|
El punto de inicio de la secuencia: el número
emitido por la primera selección. El valor predeterminado es 1, pero puede
ser cualquier otro.
|
MAX VALUE
|
El número más alto de una secuencia ascendente antes
de generar un error o volver a su valor START WITH. El valor predeterminado
es sin límite máximo.
|
MIN VALUE
|
El número más bajo de una secuencia descendente antes
de generar un error o volver a su valor START WITH. El valor predeterminado
es sin mínimo.
|
CYCLE
|
Controla el comportamiento al alcanzar a MAXVALUE
o MINVALUE. El comportamiento predeterminado es dar un error, pero si se
especifica CYCLO la secuencia volverá a su posición inicial y repetirse.
|
CACHE
|
Para rendimiento, Oracle puede pre emitir valores
de la secuencia y cachearlos o guardarlos y luego emitir los valores a los
usuarios. El comportamiento por defecto es generar 20 y guardarlos
|
ORDER
|
Relevante para una Base de Datos en Cluster:
ORDER forza a las instancias para
coordinar el incremente.
|
Ajustes apropiados para INCREMENT BY, START WITH, MAXVALUE o MINVALUE
vendrán de los analistas de negocio. Es muy raro y vuelva a ser utilizada una
secuencia, ya que permite la edición secuencia de valores duplicados. Si se
está utilizando la secuencia para generar valores de clave principal, CYCLE
sólo tiene sentido si hay una rutina en la base de datos que va a eliminar
filas.
Almacenamiento en caché los valores de secuencia es vital para el
rendimiento. Selección de una secuencia es un punto de serialización en el
código de la aplicación: sólo una sesión puede hacer esto a la vez. El
mecanismo es muy eficiente: es mucho más rápido que el bloqueo de una fila, la
actualización de la fila, y luego abrir con un COMMIT. Pero aún así, la
selección de una secuencia puede ser una causa de la discordia entre las
sesiones. La palabra clave CACHE ordena a Oracle que Pregenere números de
secuencia por lotes. Esto significa que se pueden emitir más rápido que si
tuvieran que ser generada bajo demanda.
Comentarios
Publicar un comentario