consumo de recursos en Batch query

28/06/2005 - 15:00 por **joselitux** | Informe spam
En una conexion con la base de datos cargo cuatro SELECT en un Resultset.

¿es menos eficiente que abrir y cerrar un recordset por cada sentencia
SELECT para recorrer los resultados?

Quiero decir, ¿no estoy sobrecargando la memoria del servidor
aprovechando que puedo hacer las 4 consultas en una sola conexion?

O sea, me explico, ¿cuál de los dos procedimientos siguientes es más
limpio y tira menos del servidor?.

PRIMERO
conexion.execute ("SELECT 1;SELECT 2;SELECT 3; SELECT 4")
mostrar datos
cerrar conexion

SEGUNDO
conexion.execute("select 1")
mostrar datos y cerrar
conexion.execute("select 2")
mostrar datos y cerrar
conexion.execute("select 3")
mostrar datos y cerrar
conexion.execute("select 4")
mostrar datos y cerrar


Gracias

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
28/06/2005 - 15:25 | Informe spam
joselitux,

Eso depende del tipo de cursor que estes seteando, propiedades del objeto
recordset como:

- CursorLocation
- CursorType
- LockType
- CacheSize

son determinantes en como sera procesada la data. SQL Server procesara las
cuatro sentencias select como si estas conformaran un batch y mas importante
es el setting de las propiedades mencionadas, asi como la cantidad de data
que sera seleccionada.


AMB

"**joselitux**" wrote:

En una conexion con la base de datos cargo cuatro SELECT en un Resultset.

¿es menos eficiente que abrir y cerrar un recordset por cada sentencia
SELECT para recorrer los resultados?

Quiero decir, ¿no estoy sobrecargando la memoria del servidor
aprovechando que puedo hacer las 4 consultas en una sola conexion?

O sea, me explico, ¿cuál de los dos procedimientos siguientes es más
limpio y tira menos del servidor?.

PRIMERO
conexion.execute ("SELECT 1;SELECT 2;SELECT 3; SELECT 4")
mostrar datos
cerrar conexion

SEGUNDO
conexion.execute("select 1")
mostrar datos y cerrar
conexion.execute("select 2")
mostrar datos y cerrar
conexion.execute("select 3")
mostrar datos y cerrar
conexion.execute("select 4")
mostrar datos y cerrar


Gracias


Respuesta Responder a este mensaje
#2 Maxi
28/06/2005 - 15:28 | Informe spam
Hola, en este caso no seria eficiente abrir y cerrar tanto. La idea no es
hacerlo por instruccion sino que la idea es abrir una conexion usarla y
luego cerrarla cuando no la voy a necesitar mas. En tu caso seria

PRIMERO
conexion.execute ("SELECT 1;SELECT 2;SELECT 3; SELECT 4")
mostrar datos

SEGUNDO
conexion.execute("select 1")
mostrar datos r
conexion.execute("select 2")
mostrar datos
conexion.execute("select 3")
mostrar datos
conexion.execute("select 4")
mostrar datos y cerrar



Salu2
Maxi


"**joselitux**" escribió en el mensaje
news:%23uDMvF%
En una conexion con la base de datos cargo cuatro SELECT en un Resultset.

¿es menos eficiente que abrir y cerrar un recordset por cada sentencia
SELECT para recorrer los resultados?

Quiero decir, ¿no estoy sobrecargando la memoria del servidor aprovechando
que puedo hacer las 4 consultas en una sola conexion?

O sea, me explico, ¿cuál de los dos procedimientos siguientes es más
limpio y tira menos del servidor?.

PRIMERO
conexion.execute ("SELECT 1;SELECT 2;SELECT 3; SELECT 4")
mostrar datos
cerrar conexion

SEGUNDO
conexion.execute("select 1")
mostrar datos y cerrar
conexion.execute("select 2")
mostrar datos y cerrar
conexion.execute("select 3")
mostrar datos y cerrar
conexion.execute("select 4")
mostrar datos y cerrar


Gracias

Respuesta Responder a este mensaje
#3 jomaweb
28/06/2005 - 17:27 | Informe spam
Cursor de sololectura (tipo 3) y forward only.


Alejandro Mesa wrote:
joselitux,

Eso depende del tipo de cursor que estes seteando, propiedades del objeto
recordset como:

- CursorLocation
- CursorType
- LockType
- CacheSize

son determinantes en como sera procesada la data. SQL Server procesara las
cuatro sentencias select como si estas conformaran un batch y mas importante
es el setting de las propiedades mencionadas, asi como la cantidad de data
que sera seleccionada.


AMB

"**joselitux**" wrote:


En una conexion con la base de datos cargo cuatro SELECT en un Resultset.

¿es menos eficiente que abrir y cerrar un recordset por cada sentencia
SELECT para recorrer los resultados?

Quiero decir, ¿no estoy sobrecargando la memoria del servidor
aprovechando que puedo hacer las 4 consultas en una sola conexion?

O sea, me explico, ¿cuál de los dos procedimientos siguientes es más
limpio y tira menos del servidor?.

PRIMERO
conexion.execute ("SELECT 1;SELECT 2;SELECT 3; SELECT 4")
mostrar datos
cerrar conexion

SEGUNDO
conexion.execute("select 1")
mostrar datos y cerrar
conexion.execute("select 2")
mostrar datos y cerrar
conexion.execute("select 3")
mostrar datos y cerrar
conexion.execute("select 4")
mostrar datos y cerrar


Gracias


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida