Quiero insertar n registros en una sola tabla. Puede haber muchos usuarios simultáneos y pueden insertar/actualizar/seleccionar datos de esta tabla. ¿Qué es la mejor manera de insertar en una tabla de este tipo SAY 1000 registros:Sql insertar rendimiento de consulta
- enviar una sola consulta SQL a una base de datos con múltiples inserciones. Esto ahorra llamadas de servidor a base de datos, pero (no estoy seguro) bloquea la tabla hasta que finalice la inserción y todas las demás consultas a esta tabla esperarán.
- Divide 1000 registros en algunos fragmentos y envíalos en múltiples consultas sql. Esto permite que las otras consultas se ejecuten en la tabla, pero pasen tiempo en el servidor para las llamadas a la base de datos.
¿Es esto depende de algo, o hay una sola manera que es siempre la óptima? ¿Esto depende de si se usan transacciones o no, al insertar datos? ¿Hay otras formas mejores de realizar una inserción de este tipo?
La base de datos que uso es MS SQL, pero es interesante cómo funciona en otras bases de datos como Oracle.
publicación de blog interesante +1. Me interesa mi interés en cuanto a las transacciones de _suena_ aparecen más rápido en su prueba. Sospecho que es porque muchos de los bloqueos necesarios ya han sido tomados por pases previos. La única cosa crucial, sin embargo, que su publicación no aborda es el comportamiento bajo carga. Sus pruebas parecen estar en aislamiento; en un sistema en vivo, sospecho que los resultados se invertirían bastante rápido. – EBarr