sql - principales - eliminar una gran cantidad de filas de una tabla
sentencia select db2 (3)
Tenemos un requisito para eliminar filas del orden de millones de varias tablas como un trabajo por lotes (tenga en cuenta que no estamos eliminando todas las filas, estamos eliminando en función de una marca de tiempo almacenada en una columna indexada). Obviamente, un DELETE normal toma una eternidad (debido al registro, la verificación de restricciones referenciales, etc.). Sé en el mundo de LUW, tenemos ALTER TABLE NOT LOGGED INITIALLY pero parece que no puedo encontrar una declaración SQL equivalente para DB2 v8 z / OS. ¿Alguien tiene alguna idea sobre cómo hacer esto realmente rápido? Además, ¿alguna idea sobre cómo evitar los controles referenciales al eliminar las filas? Por favor hagamelo saber.
¿Las claves externas ya tienen índices?
¿Cómo se establece su acción de eliminación?
CASCADE, NULL, NO ACTION
Use SET INTEGRITY para desactivar temporalmente las restricciones en el proceso por lotes. http://www.ibm.com/developerworks/data/library/techarticle/dm-0401melnyk/index.html
http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/admin/r
En el pasado, he resuelto este tipo de problema exportando los datos y volviéndolos a cargar con un comando de reemplazo de estilo. Por ejemplo:
EXPORT to myfile.ixf OF ixf
SELECT *
FROM my_table
WHERE last_modified < CURRENT TIMESTAMP - 30 DAYS;
Entonces puedes CARGARLO de nuevo, reemplazando lo viejo.
LOAD FROM myfile.ixf OF ixf
REPLACE INTO my_table
NONRECOVERABLE INDEXING MODE INCREMENTAL;
No estoy seguro de si esto será más rápido o no para usted (probablemente, esto depende de si está eliminando más de lo que conserva).
Modificamos el espacio de tabla para que el bloqueo se produzca en el nivel de espacio de tabla en lugar de en el nivel de página. Una vez que cambiamos, DB2 solo requería un bloqueo para realizar el DELETE y no tuvimos ningún problema con el bloqueo. En cuanto al registro, le pedimos al cliente que se dé cuenta de la cantidad de registros requeridos (ya que no parecía haber una solución para evitar el problema de registro). En cuanto a las restricciones, las dejamos caer y las volvimos a crear después de la eliminación.
Gracias a todos por su ayuda.