Optimización del rendimiento de BCP para datos BLOB

13

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.

Mark Storey-Smith
fuente

Respuestas:

12

Esta no es una respuesta directa a su pregunta, pero hay algunos artículos que le interesaría leerlos (en caso de que no los haya encontrado primero :-)). Se trata de cargar muchos datos utilizando bcp / copia masiva. Los he leído todos y no encontré nada detallado sobre KILOBYTES_PER_BATCH, todos están usando ROWS_PER_BATCH, pero estoy seguro de que encontrarán otra información útil.

y las referencias obvias de MSDN:

En mi experiencia personal, logré hacer una carga de datos rápida usando carga paralela y probando con varios tamaños de lote. Supongo que solo las pruebas personales serán adecuadas para usted. Esperemos que encuentres algunos buenos consejos en las referencias.

Mariano
fuente
Gracias Marian, he marcado algunos hallazgos nuevos de esa lista exhaustiva. Como una tarea única, muchos de los pasos incrementales / de refinación no son tan útiles, pero hay muchos consejos que puedo usar.
Mark Storey-Smith
Sí, tengo su opinión, para mí también fue una tarea única, y encontré algunas cosas útiles en la lista. Sin embargo, es una gran tarea :-). También puede hacer una pequeña aplicación .NET (si está familiarizado con .NET), como en otro artículo de Linchi Shea: Impacto en el rendimiento: el script de inserción más óptimo no puede vencer a BulkCopy . Puede encontrar lo mismo que él :-).
Marian
Como no parece haber ninguna guía específica de BLOB para BCP en la naturaleza, estoy marcando su respuesta exhaustiva como aceptada. Gracias de nuevo.
Mark Storey-Smith
Lo siento, no pude ayudarte más, pero espero que hayas encontrado algo útil.
Marian