Secuencias
Una secuencia es un objeto almacenado que simplemente genera una secuencia de números en un orden ascendente (o descendente) de forma monotónica. Una secuencia proporciona una forma de hacer que un Db2 genere automáticamente claves primarias enteras únicas y coordinar claves en varias filas y tablas.
Una secuencia se puede utilizar para utilizar la paralelización, en lugar de generar de forma programada números exclusivos bloqueando el valor utilizado más recientemente y, a continuación, aumentándolo.
Las secuencias están indicadas especialmente para la tarea de generar valores de claves exclusivos. Una secuencia se puede utilizar para muchas tablas, o se puede crear una secuencia separada para cada tabla que requiera la generación de claves. Una secuencia tiene las propiedades siguientes:
- Valores exclusivos y garantizados, presuponiendo que la secuencia no se restaura y no permite el ciclo de los valores.
- Valores que aumentan o disminuyen de forma monotónica dentro de un rango definido
- Puede incrementarse con un valor distinto a 1 entre valores consecutivos (el valor predeterminado es 1).
- Recuperable. Si Db2 fallara, la secuencia se reconstruiría a partir de los registros para que Db2 garantice que se sigan generando valores de secuencia exclusivos a través de una anomalía de Db2.
Db2 genera automáticamente los valores de una secuencia determinada. El uso de secuencias de Db2 evita el cuello de botella de rendimiento que se produce cuando una aplicación implementa secuencias fuera de la base de datos. El contador de la secuencia se incrementa (o disminuye) independientemente de la transacción. En algunos casos, se pueden introducir espacios en una secuencia. Un espacio puede producirse cuando una transacción determinada incrementa una secuencia en dos. La transacción puede observar un espacio en los dos números que se generan porque es posible que otras transacciones estén incrementando simultáneamente la misma secuencia. Un usuario puede no reconocer que otros usuarios están trabajando en la misma secuencia. Además, es posible que una secuencia determinada parezca haber generado huecos en los números, porque una transacción que podría haber generado un número de secuencia podría haber retrotraído o el subsistema Db2 podría haber fallado. La actualización de una secuencia no forma parte de la unidad de recuperación de una transacción.
Una secuencia se crea mediante una sentencia CREATE SEQUENCE. Se puede hacer referencia a una secuencia utilizando una referencia de secuencia. Una referencia de secuencia puede aparecer en más posiciones que una expresión. Una referencia de secuencia puede especificar si el valor que se ha de devolver es un valor recién generado o el valor generado previamente.
Aunque existen similitudes, una secuencia es distinta de una columna de identidad. Una secuencia es un objeto de secuencia, mientras que una columna de identidad forma parte de una tabla. Una secuencia se puede utilizar con varias tablas pero una columna de identidad está vinculada a una sola tabla.