Necesito actualizar 100 millones de registros en una sola tabla, en efecto, normalizando la tabla reemplazando el valor varchar de una columna con simplemente una ID. (Digo "reemplazar" pero realmente estoy escribiendo el ID en otra columna).
Lo que intento lograr es normalizar el conjunto de datos. Los datos aún no normalizados no tienen indexación. Pensé que no crearía índices en los valores sin procesar, esperando, en lugar de indexar las claves foráneas que reemplazarán los valores varchar con los valores tinyint después de que se complete la actualización.
UPDATE A
SET A.AutoClassID = B.AutoClassID
FROM AutoDataImportStaging.dbo.Automobile as A
JOIN AutoData.dbo.AutoClass as B on (A.AutoClassName = B.AutoClassName)
Antecedentes
- utilizando MSSQL 2008 R2 en Server 2008 R2
- el servidor tiene 8 GB de RAM
- el servidor tiene un RAID10, 7200 RPM SATA (no es bueno, lo sé, en producción esto solo leerá datos y no escribirá datos; además, la escasez de HD reciente lo hizo necesario por el costo)
- el servidor tiene doble CPU Xeon de cuatro núcleos
- la máquina no está haciendo nada más (actualmente dedicada al desarrollo, solo este proceso)
- inicio de sesión simple activado (? - pero ¿sigue registrando para poder retroceder?)
- tenga en cuenta que la consulta hace referencia a dos bases de datos diferentes, para lo que vale
- El "ancho" de un registro en la tabla que se actualiza es de 455 bytes
Recursos durante la ejecución
- la RAM física está al máximo
- la E / S del disco está al máximo
- La CPU apenas está haciendo nada (el punto de estrangulamiento es E / S)
- El tiempo de ejecución ha sido de 14 horas y contando!
Sospecho que necesito un índice en los datos sin procesar, aunque descartaré la columna (AutoClassName) después de las actualizaciones de normalización. También me pregunto si debería recorrer la tabla un registro a la vez en lugar de JOIN, lo que parecía ridículo en el momento en que comencé esto, pero ahora parece que hubiera sido más rápido.
¿Cómo debo cambiar mi metodología para mis actualizaciones de normalización restantes (similares a esta) más rápidamente?
TOP
cláusula Ese sería mi enfoque.