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 Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-05-2008
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 18
waly2k1 Va por buen camino
Duda de Perfomance con Zeos...

Vi varios hilos donde se aconseja utilizar Zeos con MySQL y de hecho lo estoy usando, funciona perfectamente sin 'grandes' cambios de una aplicación que usaba ADO. El tema en cuestión es que cuando quiero traer un maestro de artículos con 7300 registros aproximadamente se viene todo abajo, trabajando local y sin procesos previos, o sea:

Código SQL [-]
SELECT CAMPO1, CAMPO2, CAMPO3... FROM TABLA ORDER BY ID_PRODUCTO
ID_PRODUCTO es la clave primaria. Es impresionante lo que tarda, ni hablar de que consume todos los recursos de la PC (cuando no se cuelga).

Es esto normal ?.
No son muchos registros. El problema es de Zeos ó MySQL ó ???
Las tablas son de tipo MyISAM y no InnoDB, con lo cual las consultas deberían ser mas 'óptimas'.

A alguien le pasó algo así ?
Bah nose que mas preguntar. Acepto todo tipo de sugerencias.
Saludos y muchas gracias de antemano!
Responder Con Cita
  #2  
Antiguo 01-05-2008
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.734
Poder: 20
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Se me ocurre que el problema no sea cuando traes esta tabla maestro, sino una o varias tablas detalle que dependan de esta.

Mira que tienes en los métodos before/afteropen, before/afterscroll y las tablas que tengas unidas a esta por su DataSource.

(Puedes hacer la prueba de desabilitar estas tablas antes de abrir el maestro y luego volver a abrirlas.)
Responder Con Cita
  #3  
Antiguo 01-05-2008
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Y pregunto yo, sólo por curiosidad, ¿para qué sirve tener en pantalla una lista de más de 7000 clientes?
Yo los atiendo siempre de uno en uno.
Responder Con Cita
  #4  
Antiguo 01-05-2008
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Cita:
Empezado por waly2k1 Ver Mensaje
Vi varios hilos donde se aconseja utilizar Zeos con MySQL y de hecho lo estoy usando, funciona perfectamente sin 'grandes' cambios de una aplicación que usaba ADO. El tema en cuestión es que cuando quiero traer un maestro de artículos con 7300 registros aproximadamente se viene todo abajo, trabajando local y sin procesos previos, o sea:


Código SQL [-]SELECT CAMPO1, CAMPO2, CAMPO3... FROM TABLA ORDER BY ID_PRODUCTO


ID_PRODUCTO es la clave primaria. Es impresionante lo que tarda, ni hablar de que consume todos los recursos de la PC (cuando no se cuelga).

Es esto normal ?.
No son muchos registros. El problema es de Zeos ó MySQL ó ???
Las tablas son de tipo MyISAM y no InnoDB, con lo cual las consultas deberían ser mas 'óptimas'.

A alguien le pasó algo así ?
Bah nose que mas preguntar. Acepto todo tipo de sugerencias.
Saludos y muchas gracias de antemano!
Yo creo que el problema pasa por otro lado. Trabajo con mySQL y tablas MyISAM, tengo una ventana en donde hago un SELECT * de más de 16000 registros, y la consulta es practicamente instantánea, tengo claves primareas y unas cuantas foráneas. Creo que deberías realizar un mantenimiento del mySQL, posiblemente haya algún índice roto. Tengo una PC Athlon 2.2 con 512Mb de ram, y nunca tuve problemas de recursos, ni trabajando con mySQL de local.
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #5  
Antiguo 01-05-2008
Avatar de enecumene
[enecumene] enecumene is offline
Miembro de Oro
 
Registrado: may 2006
Ubicación: Santo Domingo, Rep. Dom.
Posts: 3.040
Poder: 21
enecumene Va por buen camino
Cita:
Empezado por MaMu Ver Mensaje
Yo creo que el problema pasa por otro lado. Trabajo con mySQL y tablas MyISAM, tengo una ventana en donde hago un SELECT * de más de 16000 registros, y la consulta es practicamente instantánea, tengo claves primareas y unas cuantas foráneas. Creo que deberías realizar un mantenimiento del mySQL, posiblemente haya algún índice roto. Tengo una PC Athlon 2.2 con 512Mb de ram, y nunca tuve problemas de recursos, ni trabajando con mySQL de local.
Yo Tampoco tengo problemas con Zeos y MySQL, yo tengo una tabla de 47,000 registros y al hacer un select me lo muestra todos en el momento y es igual en la red o local, concuerdo con MAMU de que debe haber un indice roto o falta algunas de ellas.

Saludos.
__________________

Mi BLOG - ¡Joder, leanse la guia de estilo!
Las Palabras son enanas, los ejemplos gigantes.
Responder Con Cita
  #6  
Antiguo 02-05-2008
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 18
waly2k1 Va por buen camino
Bien, gracias!

Y nose que decirles, seguiré probando pero es muy raro. Con SQL Server jamás noté falta de rendimiento con tan pocos registros.

La PC de un cliente era un Celeron 2.X con 512mb de ram, y tardaaaaba, entonces me traje la base para probarla en casa, con un Athlon 3600 y 1 GB de Ram, tarda caaaasi 5 minutos menos, juas! es altamente repulsivo el sistema así. Si me tarda 5 minutos en traer 7000 registros me retiro de la programación y me dedico al arte culinario!

Casimiro, no son clientes sino productos, pero en caso que lo fueran y quisiera traer los 7000/20000 registros no es nada, el gestor de BD se
debería 'bancar' perfectamente. Ahora, al menos me queda claro que no es el motor ni zeos, entonces veré como optimizar mi sistema/consultas.

Muchas gracias muchachos ya encontraré el problema.
Responder Con Cita
  #7  
Antiguo 03-05-2008
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 18
waly2k1 Va por buen camino
Problema solucionado

En el evento FormShow del formulario en cuestión
tenía estas tres lineas:

Código:
    Data.zqryPROD.SortedFields := 'COD_SCANNER';
    Data.zqryPROD.SortType := stDescending;
    grdDataTitleClick( grdData.Columns[1] );
De manera tal que me quede ordenado de manera Ascendente en una grilla y seleccionado ese campo para busquedas automaticamente. O sea lo ordenaba en forma descendente y luego en el evento grdDataTitleClick lo vuelvo a ordenar, todo esto sin llegar a cargar el form(Y solo para que se resalte el campo a buscar)

Algo totalmente sin importancia, pero ordenar una tabla mediante Sort es pesado con zeos. No así con ADO, pero bueh, no voy a comparar un metodo de acceso con otro.

Es todo gente, muchas gracias por la atención brindada.
Responder Con Cita
  #8  
Antiguo 03-05-2008
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Poder: 19
MaMu Va por buen camino
Cita:
Empezado por waly2k1 Ver Mensaje
...pero ordenar una tabla mediante Sort es pesado con zeos. No así con ADO, pero bueh, no voy a comparar un metodo de acceso con otro.
Compatriota mío...

Es curioso, porque el Sort en Zeos yo lo adoro, y es uno de los puntos fuertes que le encontré, ya el hecho de tener propiedades SortedField y SortType dotan a este componente de una utilidad muy importante.
Yo acabo de probar realizar una consulta a una tabla que tiene 24 campos, 1 clave primaria y 2 foráneas. Esta tabla tiene en su RecordCount la cantidad de 244.178 registros, y la devolución del cursor de datos es "al ojo" casi imperceptible, por no decirte instantánea. No se que versión de Zeos estes usando, pero asegurate de bajar la ultima versión que este disponible, y fijate de usar el driver adecuado en la propiedad Protocol de la conexión.

Saludos
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita
  #9  
Antiguo 03-05-2008
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 18
waly2k1 Va por buen camino
Hum a ver...

Cita:
Empezado por MaMu Ver Mensaje
No se que versión de Zeos estes usando, pero asegurate de bajar la ultima versión que este disponible, y fijate de usar el driver adecuado en la propiedad Protocol de la conexión.
MaMu, creo que me desconcertaste un poco en cuanto a version/protocolo, ya que creo es la ultima.

ver.: 6.6.2-RC
protocolo: mysql-5 (Acá puede haber diferencias, ya que hay varios drivers para MySQL)

En caso de que haya algo mejor me avisas por favor, o que yo lo emplee mal nose.

Me fascinó Zeos porque pasar un sistema completo hecho con ADO fue muy rápido y con un mínimo esfuerzo. Mi idea era lograr que el sistema funcione en web, funciona pero no como debería ya que al ser muchas tablas que actualizo se torna un poco pesado y se va por timeout.

Bueno compa, decime por favor qué/cómo lo usas y lo pruebo, estoy seguro que debe mejorar el rendimiento.

Saludos y muchas gracias!
Responder Con Cita
  #10  
Antiguo 04-05-2008
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 21
AzidRain Va camino a la fama
Yo ya me andaba espantando con 250 mil registros pero MySQL los maneja como plumas. Ahora que también tiene que ver que el sort lo hago del lado del servidor mediante ORDER BY por lo cual sin duda es mucho más rápido.
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
  #11  
Antiguo 04-05-2008
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 18
waly2k1 Va por buen camino
Y con 250K necesito un AS400

Cita:
Empezado por AzidRain Ver Mensaje
Yo ya me andaba espantando con 250 mil registros pero MySQL los maneja como plumas. Ahora que también tiene que ver que el sort lo hago del lado del servidor mediante ORDER BY por lo cual sin duda es mucho más rápido.
Azid: El método Sort realiza el orden con los registros ya en memoria o sea que debería ser mucho mas rápido que acceder a un server, extraer los registros y ordenarlos, ya sea éste el que los ordene y después los recibas ordenados y los cargues en memoria. Además el order by sería rápido si todos los campos por el que quisieras ordenar estuviesen indexados.

Estoy probando con los distintos protocolos, pero no logro acelerar esto. Es un bicho raro!

Saludos
Responder Con Cita
Respuesta



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
Duda con componentes Zeos waly2k1 Conexión con bases de datos 8 14-03-2008 01:33:28
Zeos tertuliano Conexión con bases de datos 3 11-09-2006 18:04:45
Zeos pipecato Varios 0 02-09-2005 22:24:26
Zeos y Try Except JROMAN Conexión con bases de datos 0 15-10-2004 10:01:49
zeos agora18 MySQL 0 10-02-2004 22:57:47


La franja horaria es GMT +2. Ahora son las 20:10:08.


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