Foros del Web » Programando para Internet » ASP Clásico »

varias consultas con el mismo RecordSet y Command

Estas en el tema de varias consultas con el mismo RecordSet y Command en el foro de ASP Clásico en Foros del Web. Es correcto hacer varias consultas utilizando el mismo Objeto RecordSet para asignar el resultado sin cerrarlo y el mismo Command (actualizando el CommandText con la ...
  #1 (permalink)  
Antiguo 12/06/2003, 21:58
 
Fecha de Ingreso: julio-2002
Mensajes: 447
Antigüedad: 22 años, 9 meses
Puntos: 0
varias consultas con el mismo RecordSet y Command

Es correcto hacer varias consultas utilizando el mismo Objeto RecordSet para asignar el resultado sin cerrarlo y el mismo Command (actualizando el CommandText con la sentencia SQL únicamente) o puede llevar a algún error? Es mejor cerrarlo al RecordSet y utilizar también otro objeto Command?
Tengo varias consultas y estoy usando el GetRows, es decir por cada consulta que hago, se la asigno al RecordSet, uso el GetRows, cambio el CommandText, ejecuto la otra consulta, se la asigno al RecordSet que tenía y así sigo.
Me gustaría saber la manera óptima de trabajar con esto.
Muchas gracias. Saludos.
  #2 (permalink)  
Antiguo 13/06/2003, 03:20
Avatar de Subotai  
Fecha de Ingreso: mayo-2003
Ubicación: Irúnforge
Mensajes: 198
Antigüedad: 22 años
Puntos: 1
Hola haber si te puedo ayudar
uff acabo de leer el mensaje , igual me he extendido un poquito.... bueno ahi te va:

Lo mas sano es utilizar el menor espacio de memoria posible, es decir optimizar el uso de la memoria usando el menor numero de variables posibles, pero claro, cuando decimos memoria, a que tipo de memoria nos referimos?
¿donde se ejecuta una pagina ASP?en el servidor, ta claro, al cliente solo le llega codigo html, entonces hay que darse cuenta de que todas las variables que uses estaran en el servidor, pero un servidor es algo mas complejo.
Si le preguntas a un licenciado en informatica te dira que un servidor es un proceso , pero ese proceso se ejecuta en una maquina y en esa maquina cuantos procesos hay? y a donde quiero llegar con toda esta parrafada, pues que las bases de datos no tienen memoria infinita (al menos en bds del tipo SQL Server,Informix...y si nos metemos en Oracle eso es todo un arte!! Access no tengo ni idea) sino que tienen un espacio maximo asignado (el resto de la memoria RAM es para el uso de los demas procesos, ya sean otras bds, como procesos de sist. operativo como otra aplicacion que se te ocurra) y cuando ese espacio se llena comenzará a paginar los datos que no le entran en la RAM y los mandará a disco, entoces todo ira mas lento .
Asi que si en tu pagina creas un monton de recordsets para cada consulta por simple que sea y los mantienes abiertos hasta que se termina de cargar la pagina, el servidor "sufre" y si tod@s l@s programadores/as le hacemos sufrir pues...ira mas lento que el caballo del malo :-p y eso no nos interesa na de na .
Por lo tanto, la idea es que todo el espacio de memoria que necesitemos utilizar sea utilizado el menor tiempo posible Y QUE NO ESTE DUPLICADO JAMAS.
Asi que mi consejo es que cada vez que necesites usar recordsets utilices Getrows(como tu haces sabiamente) ya que tendras los mismos datos que ocupan el mismo tamaño en memoria pero...no en el espacio de memoria asignado a la bd sino en el espacio general que por norma general suele ser mucho mayor, es decir,todas tus variables las gestionara el sistema operativo (que POR NORMA GENERAL suelen gestionar mejor que los motores de bds) y asi es menos provable que acaben paginadas en disco.
Pero claro si hicieramos esto con todos los recordsets que usemos, habra un precioso espacio de memoria reservado a la bd sin usar, asi que lo mejor es escoger que recordset va a parar al ambito de memoria general y cual se queda en el ambito de la BD.
Una buena opcion es dejar en el ambito de la Bd los mas "generales" a lo que necesitas acceder muchas veces a lo largo de tu Aplicacion Web.
Esta es una manera de "ayudar" al servidor, es decir, a la maquina donde reside el servidor, de esta manera las cosas fucionaran menos peor .
No se si me he dejado alguna cosilla pero no nos vamos a complicar mas todavia, no? jejeje si me he equivocado en algo por favor avisadme, es un tema que me interesa muchiiiiiismo.
agur

Última edición por Subotai; 13/06/2003 a las 03:26
  #3 (permalink)  
Antiguo 13/06/2003, 05:44
 
Fecha de Ingreso: julio-2002
Mensajes: 447
Antigüedad: 22 años, 9 meses
Puntos: 0
Ante todo, muchas gracias por la respuesta
Yo me acuerdo que hace un tiempo atrás, utilizaba un solo objeto Command para todas las consultas, y vaya uno a saber por qué, recibía esporádicamente errores (que aparentemente si estaban relacionados a usar el mismo objeto Command porque busqué el error en Microsoft y decía que podía ser una de las posibles causas). Entonces hice un objeto Command por cada consulta y dejó de aparecer ese error para siempre.
Ahora bien, llegó un punto que teniendo tantas consultas, la página se enlenteció bastante, por eso trato de optimizarla a más no poder.
Muchas gracias nuevamente por tu respuesta, me aclaró más algunas cosas, si alguien tiene más para agregar, bienvenido sea.
Saludos
  #4 (permalink)  
Antiguo 13/06/2003, 05:49
Avatar de Subotai  
Fecha de Ingreso: mayo-2003
Ubicación: Irúnforge
Mensajes: 198
Antigüedad: 22 años
Puntos: 1
Simplemente es nada mas usar un recordset y no necesitarlo mas cerrarlo cuanto antes.
ademas siempre convendria saber como esta configurada el area de memoria de tu bd para extralimitarte en su uso lo menos posible, es imposible conseguir el MAXIMO rendimiento pero se puede, se debe intentar alcanzarlo.
Cuida a tu base de datos y ella cuidara de ti!!!!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 3 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 07:51.