Soy el proceso de planificar la migración en vivo de una base de datos de 2TB a tablas particionadas. En términos generales, el sistema es un almacén de documentos, la mayoría del espacio se asigna a LOB de entre 50 kb y 500 kb, con un pequeño porcentaje en el rango de 500 kb a 1 MB. Parte de la migración implicará datos de BCPing de la base de datos antigua a la nueva.
BCP es el enfoque preferido ya que la división actual / histórica en los datos permite extraer los datos más antiguos en etapas (durante los períodos más tranquilos) antes de un cambio final, minimizando el impacto en el sistema en vivo. El volumen de datos y la disponibilidad de almacenamiento impide una reconstrucción in situ a un esquema de partición .
Sospecho que puede haber algunas ganancias de rendimiento al experimentar con KILOBYTES_PER_BATCH en lugar de ROWS_PER_BATCH, debido al contenido BLOB. Se sugiere en la documentación de BCP que SQL puede optimizar las operaciones basadas en este valor.
Lo que no puedo encontrar es ninguna guía sobre la naturaleza de estas optimizaciones o dónde comenzar mis pruebas. En ausencia de sugerencias, intentaré tiradas cortas en los límites de 4/8/16/32 / 64mb para comenzar.
Probablemente algunas ganancias se obtengan al cambiar el tamaño del paquete (BCP -un parámetro, en lugar de la configuración del nivel del servidor), pero me inclino a llevar esto al máximo 65535 a menos que alguien tenga un enfoque más formulado.
fuente