Dado: SQL Server 2008 R2. Salga de algunos discos de datos speedin. Log los discos rezagados.Optimización del rendimiento de inserción masiva ...?
Requerido: LOTES LOTES LOTES de insertos. Como 10.000 a 30.000 filas en una tabla simple con dos índices por segundo. Los insertos tienen un orden intrínseco y no se repetirán, ya que dicho orden de inserciones no debe mantenerse a corto plazo (es decir, múltiples insertos paralelos son correctos).
Hasta ahora: acumulando datos en una cola. Regularmente (subproceso de subprocesamiento asincrónico) vaciar hasta 1024 entradas en un elemento de trabajo que se pone en cola. Threadpool (clase personalizada) tiene 32 hilos posibles. Abre 32 conexiones.
Problema: el rendimiento está desactivado por un factor de 300 ... solo se insertan entre 100 y 150 filas por segundo. El tiempo de espera de registro es de hasta 40% - 45% del tiempo de procesamiento (ms por segundo) en el servidor sql. La carga de la CPU del servidor es baja (4% a 5% o menos).
No utilizable: inserción a granel. Los datos se deben escribir en tiempo real como sea posible en el disco. Esto es más o menos un proceso archivl de datos que se ejecutan a través del sistema, pero hay consultas que necesitan acceso a los datos regularmente. Podría tratar de tirarlos al disco y usar la carga masiva de 1 a 2 veces por segundo ... probaré esto.
¿Alguien una idea inteligente? Mi siguiente paso es mover el registro a un conjunto de discos rápidos (128 gb ssd moderna) y ver qué sucede en ese momento. El aumento significativo en el rendimiento probablemente hará las cosas bastante diferentes. Pero incluso entonces ... la pregunta es si/qué es factible.
Por lo tanto, dispare las ideas inteligentes.
¿alguna vez se obtiene una resolución final a esto? – Carth