FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
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 |
#2
|
||||
|
||||
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 !!!!!
|
#3
|
||||
|
||||
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.
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#4
|
||||
|
||||
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 |
#5
|
||||
|
||||
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. |
#6
|
||||
|
||||
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. |
#7
|
||||
|
||||
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
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
#8
|
||||
|
||||
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 !! |
#9
|
||||
|
||||
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. |
#10
|
||||
|
||||
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 |
#11
|
|||
|
|||
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 |
#12
|
||||
|
||||
Cita:
Cita:
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. |
#13
|
||||
|
||||
Cita:
Cita:
SOS LO MAS AL González!! gracias voy a probar luego de hacer una super bkp del programita.. segun los usuarios xS |
#14
|
||||
|
||||
Cita:
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. |
|
|
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 |
|