ExecuteNonQuery con una instrucción INSERT, o incluso un procedimiento almacenado, te llevará a miles de insertos por segundo rango en Express. 4000-5000/seg son fáciles de conseguir, lo sé con certeza.
Lo que generalmente ralentiza las actualizaciones individuales es el tiempo de espera para el registro de descarga y debe tener en cuenta eso. La solución más fácil es simplemente realizar un lote de compromiso. P.ej. cometer cada 1000 inserciones, o cada segundo. Esto llenará las páginas de registro y amortizará el costo de la descarga de registros de flujo de espera sobre todas las inserciones en una transacción.
Con las confirmaciones por lotes, probablemente acumule rendimiento de escritura en el registro del disco, lo cual no hay nada que pueda hacer al respecto, salvo cambiar el hardware (ir a incursión 0 bandas en el registro).
Si tocas cuellos de botella anteriores (improbable), entonces puedes ver las declaraciones de procesamiento por lotes, es decir. envíe un solo lote de T-SQL con múltiples inserciones en él. Pero esto rara vez vale la pena.
Por supuesto, tendrá que reducir al mínimo el tamaño de sus textos, lo que significa reducir el ancho de su tabla a las columnas mínimamente necesarias, eliminar los índices no agrupados, eliminar las restricciones innecesarias. Si es posible, use un Heap en lugar de un índice agrupado, ya que las inserciones de Heap son significativamente más rápidas que las indexadas en clúster.
Hay poca necesidad de utilizar la interfaz de inserción rápida (es decir, SqlBulkCopy). Al usar inserciones ordinarias y ExecuteNoQuery en las confirmaciones de lotes, agotarás el rendimiento de escritura secuencial de la unidad mucho más rápido que la necesidad de implementar la inserción masiva. Se necesita una inserción masiva en máquinas conectadas SAN rápidas, y usted menciona Express, por lo que probablemente no sea el caso. Existe una percepción de lo contrario por ahí, pero es simplemente porque la gente no se da cuenta de que la inserción masiva les da un compromiso por lotes, y es la confirmación por lotes que acelera la idea, no la inserción masiva.
Como con cualquier prueba de rendimiento, asegúrese de eliminar la aleatoriedad, y asignar previamente la base de datos y el registro de, que no quieren golpear dB o registro de eventos de crecimiento durante las mediciones de prueba o durante la producción, es taaan aficionado.
tengo que registrar cada salida de una en una, no puedo recoger varias salidas y les conectarse mayor –