Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-06-2011
Avatar de pnsd_89
pnsd_89 pnsd_89 is offline
Miembro
 
Registrado: mar 2007
Posts: 112
Poder: 18
pnsd_89 Va por buen camino
Arrow Consultas extremadamente lentas en Delphi y rapidicimas en PL/SQL(ORACLE)

Buenos dias amigos. Tengo un problemon y queria consultartes, para ver si alguna vez haz tenido un incombeniente similar o si tendrian alguna solucion... El tema es que uso Delphi 6 con Oracle 10g y cada tanto se van actualizando los parches del Oracle.. Y mi problema es que cuando hago un select directo desde el PL/SQL la velocidad de respuesta es rapidicima(de 5 a 10 seg).. encambio cuando lo hago desde el delphi llega a tardar como un minuto y medio a dos minutos.. cosa que en
se que desde el Delphi la respuesta es mas lenta.. pero no es tan significativa como en este caso..
desde ya muchisimas gracias...
Atte y Aguardando sus respuesta.
Pablo 1989
Responder Con Cita
  #2  
Antiguo 29-06-2011
Avatar de pnsd_89
pnsd_89 pnsd_89 is offline
Miembro
 
Registrado: mar 2007
Posts: 112
Poder: 18
pnsd_89 Va por buen camino
PD: Las interfaces funcionaban normalmente hasta hace unos cuantos dias.. y las consultas utilizan todos los indices de la tabla.. (no tienen muchos indices y no es mucho los recursos que consume de la BD) HELLLLPPPPPPPP !!!!!
Responder Con Cita
  #3  
Antiguo 29-06-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Hola, no nos has dado ninguna información para poder ayudarte

Además que no se entiende lo que has dicho, delphi no es un sistema de bases de datos, ¿cómo lo comparas con oracle?.
Otro punto es: "la velocidad de respuesta es rapidicima(de 5 a 10 seg)".
¿Rapidísimo 10 segundos?, mis clientes me matarían si las consultas tardaran tanto tiempo


Por favor, explica clara y detalladamente todo para que podamos ayudarte.
Responder Con Cita
  #4  
Antiguo 29-06-2011
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.732
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Como Casimiro, opino que no nos has dado casi nada de información.
- Trabajas con Delphi 6.
- Base de datos es Oracle10g

Algunas de las cosas que deberías facilitarle a quien desees que te ayude:
- El SQL que utilizas para generar la consulta.
- Componente Delphi con el que te comunicas con la base de datos
- Parte del código Delphi. La parta en que generas la consulta y la ejecutas.
- Qué haces con esos datos (reporte impreso, grid, operaciones para generar un resultado, etc.)
- Estructura de las tablas
Responder Con Cita
  #5  
Antiguo 29-06-2011
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.732
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Y a pesar de que no nos has dado información, voy a hacer una SUPOSICIÓN:

Puede ser que 5 a 10 segundos sea lo que tarde en llegar el primer registro y luego 1 o 2 minutos el último.

Esto puedes probarlo haciendo la consulta PL/SQL y luego ir al último registro y ver cuanto tarda.
Responder Con Cita
  #6  
Antiguo 29-06-2011
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por Casimiro Notevi Ver Mensaje
mis clientes me matarían si las consultas tardaran tanto tiempo
Casi, ya no trabajes para esa gente.

Pablo, tienes que explicar qué componentes, controladores, etc. usas para la conexión y las consultas. Además de poner un ejemplo de la sentencia SQL que se demora y dar más detalles de las tablas involucradas y cuántos registros devuelve aproximadamente esa consulta.

Saludos escandalosos.

Al González.
Responder Con Cita
  #7  
Antiguo 29-06-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.021
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Al González Ver Mensaje
Casi, ya no trabajes para esa gente.
Saludos escandalosos.
Al González.
je, je... bueno, habría que saber qué sentencia es, no es lo mismo diez segundos para sacar un informe de ventas, gastos y beneficios acumulados por cliente, artículo y día de la semana durante todo un año, que 10 segundos cada artículo de una venta en un tpv
Responder Con Cita
  #8  
Antiguo 29-06-2011
Avatar de pnsd_89
pnsd_89 pnsd_89 is offline
Miembro
 
Registrado: mar 2007
Posts: 112
Poder: 18
pnsd_89 Va por buen camino
Señores... tienen razon disculpen.. y pueden notar en la forma de escribir(aparte de no saber..) estoy desesperado...
Bueno este es el tema es que no puedo dar muchos datos por que sino en la empresa me cuajan...
Pero bueno hare lo posible para detallar al maximo mi problema...

Bueno Utilizo los componentes DBExpress.. Query + DSP+ CDS+DS

Tengo una tabla donde entran como minimo 10 transacciones por segundo...

Las ventanas que estoy usando hacen consultas a esta tabla por lo que tarda 5 a 10 segundos desde el pl/sql.. Y antes que comiencen los problemas, estas ventanas de 10 segundos que tardaban en el pl/sql, solo tardaba 15 a los mas desde la ventana con los DBExpress... pero ahora la diferencia es demaciado notoria, tanto que parece exajerada..

Pruebo desde el pl/sql y me fijo si tienen algun full acces pero nada raro.. utiliza todos los indices no hay nada malo!! con el mismo select que extraigo de mi TQuery... es eso lo que no entiendo...

Lo peor de todo es que hace tiempo que estas ventanas no se tocan ya que nunca causaron problemas y funcinaban eficientemente...

ahora otracosa me conecto al Oracle mediante el TCRSQLConnection.. El cual usa como driver el Oracle Direct (Core Lab).

He provado eliminar y vuelto a crear todos mis DBExpress para provar si alguno se corrompio, pero pero lo mismo

Ahora los parches del Oracle los acaban de actualizar... alguna vez a alguien le ocurrio algo similar a esto?

Desde ya muchisimas gracias enserio... y gracias a ustedes hoy puedo utilizar Delphi.. son lo mas Larga vida al Club Delphi !!
Responder Con Cita
  #9  
Antiguo 30-06-2011
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Tal y como te he comentado por otros cauces, creo que el problema es debido a que no estás haciendo lo mismo en ambos casos. No estás trayendo el mismo número de registros.

Me da la impresión (y me ha parecido leer que usas ClientDataset -cosa que lo reafirmaría-) de que con delphi estás trayendo TODOS los registros de la consulta, cosa que no se hace cuando la ejecutas desde el cliente de Oracle.

Has una prueba; Te puedo decir cómo hacerla con ADO, porque no se si los componentes que utilizas poseen la propiedad de cambiar el tipo de cursor.

Si la tienen prueba con los que usas, sino prueba con ADO y sabrás si ese es el problema:

(1) Coloca un formulario y un ADOQuery.
(2) Rellena la SQL y creo la cponexión con Oracle.
(3) Abre la consulta a ver qué tarda.
(4) Haz lo mismo cambiando los valores del cursor para Cliente y Server y a ver si se nota diferencia.



Un saludo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #10  
Antiguo 30-06-2011
Avatar de pnsd_89
pnsd_89 pnsd_89 is offline
Miembro
 
Registrado: mar 2007
Posts: 112
Poder: 18
pnsd_89 Va por buen camino
Muchisimas gracias por sus respuestas!!!

He visto en los componentes DBLexpress y por lo que pude ver no tienen estas propiedades... voy a ver si hay algo similar que pueda hacer.. o algo asi.. pero los componentes creo que ya no los puedo cambiar ya que implicaria una reingenieria del sistema...

MUCHISIMAS GRACIAS POR SUS RESPUESTAS ENSERIO!!

si tienen alguna otra idea seria de gran ayuda saberla...





a mal tiempo buena cara
Responder Con Cita
  #11  
Antiguo 30-06-2011
pcicom pcicom is offline
Miembro
 
Registrado: may 2003
Ubicación: MONTERREY MEXICO
Posts: 253
Poder: 21
pcicom Va por buen camino
Si tu sistema solo se ejecuta en tu RED LOCAL... creo que no tiene sentido el que actualices tu ORACLE por los parches...

Normalmente puede que estos parches afecten la eficiencia de tu actual version, y mas considerando que entonces tambien posiblemente requerias la actualizacion de tu componente de acceso a la BD... segun lo critico de los cambios en la BD (ORACLE)..

En lo particular de mi caso NO ACTUALIZO mis BD sin antes hacer un TEST de EFICIENCIA en otro equipo, ya que comunmente he notado que a veces suceden detalles que implican cambios adicionales y otros sucesos como los que mencionas lentitud...

Una vez consultados los detalles de como solucionar esto realizo lo necesario para migrar a la nueva version actualizacion de la nueva version de mi BD..


SALUDOS..
__________________
Poco ha de saber el que no pregunta.. Yo por eso soy un pregunton
Responder Con Cita
  #12  
Antiguo 30-06-2011
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por Neftali Ver Mensaje
Te puedo decir cómo hacerla con ADO, porque no se si los componentes que utilizas poseen la propiedad de cambiar el tipo de cursor.
Cita:
Empezado por pnsd_89 Ver Mensaje
[...] por lo que pude ver no tienen estas propiedades... voy a ver si hay algo similar que pueda hacer [...]
Hace años que no uso ADO porque no me agrada que el manejo de base de datos dependa tanto de las DLLs de Windows y sus actualizaciones. Alguna vez utilicé las propiedades CursorType y CursorLocation, aunque ahora mismo no recuerdo con qué propósito.

En caso de que continúes con DBX + TClientDataSet, puedes usar la propiedad PacketRecords que, cuando es mayor a 0, sirve para indicar la cantidad de registros que debe traerse de un golpe. Así, la apertura del conjunto de datos puede ocurrir de forma inmediata, y, conforme navegues en él, se traerá "paquetes" adicionales de la misma cantidad de registros.

Cabe mencionar que esto lo uso poco, ya que en la mayoría de los casos realizo consultas de no más de unas decenas de registros, y cuando necesito traer miles es por algún proceso que amerita la amable espera por parte del usuario.

Un abrazo en abonos.

Al González.
Responder Con Cita
  #13  
Antiguo 30-06-2011
Avatar de pnsd_89
pnsd_89 pnsd_89 is offline
Miembro
 
Registrado: mar 2007
Posts: 112
Poder: 18
pnsd_89 Va por buen camino
Cita:
Empezado por pcicom Ver Mensaje
Si tu sistema solo se ejecuta en tu RED LOCAL... creo que no tiene sentido el que actualices tu ORACLE por los parches...
Gracias pcicom.. pero es mas que necesario que esta BD se actualice ya que no solo funciona con la red local ya que tiene varios sistemas trabajando sobre el...

Cita:
Empezado por Al González Ver Mensaje
Hace años que no uso ADO porque no me agrada que el manejo de base de datos dependa tanto de las DLLs de Windows y sus actualizaciones. Alguna vez utilicé las propiedades CursorType y CursorLocation, aunque ahora mismo no recuerdo con qué propósito.

En caso de que continúes con DBX + TClientDataSet, puedes usar la propiedad PacketRecords que, cuando es mayor a 0, sirve para indicar la cantidad de registros que debe traerse de un golpe. Así, la apertura del conjunto de datos puede ocurrir de forma inmediata, y, conforme navegues en él, se traerá "paquetes" adicionales de la misma cantidad de registros.

Cabe mencionar que esto lo uso poco, ya que en la mayoría de los casos realizo consultas de no más de unas decenas de registros, y cuando necesito traer miles es por algún proceso que amerita la amable espera por parte del usuario.

Un abrazo en abonos.

Al González.

SOS LO MAS AL González!! gracias voy a probar luego de hacer una super bkp del programita.. segun los usuarios xS
Responder Con Cita
  #14  
Antiguo 01-07-2011
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.233
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Al González Ver Mensaje
En caso de que continúes con DBX + TClientDataSet, puedes usar la propiedad PacketRecords que, cuando es mayor a 0, sirve para indicar la cantidad de registros que debe traerse de un golpe. Así, la apertura del conjunto de datos puede ocurrir de forma inmediata, y, conforme navegues en él, se traerá "paquetes" adicionales de la misma cantidad de registros.
Pues básicamente eso es lo que hace el tipo de cursor ServerType.
En el caso de ADO tiene un número predeterminado (250/500); Que ahora no recuerdo si se puede cambiar utilizando las ExtendedProperties.

Básicamente el tiempo que tardas, es el que tarda la consulta, ya que luego los registros se traen de forma prograsiva a medida que se van necesitando. El el caso de no estar así, ejecutas la consulta y luego traes TODOS los registros (que creo que es lo que te debe estar pasando a tí), por eso te tarda tanto. En realidad la consulta te debe tardar poco, es probable que todo el tiempo lo consumas al traerlos.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Aplicaciones lentas en vista vexap Varios 3 16-11-2010 20:09:46
Consultas muy lentas en Interbase 6.01 Adrian Murua Firebird e Interbase 4 27-10-2006 22:19:07
Pregunta:Como agilizo mis consultas lentas(sp)? cacuna Firebird e Interbase 2 29-05-2004 00:04:04
Consultas en oracle Onti Oracle 3 25-09-2003 17:07:30
AYUDA Busquedas lentas st7 Conexión con bases de datos 3 14-05-2003 05:30:01


La franja horaria es GMT +2. Ahora son las 20:36:42.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi