Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   rendimiento (https://www.clubdelphi.com/foros/showthread.php?t=12047)

carlomagno 03-07-2004 10:16:58

rendimiento
 
Hola a todos

tengo una aplicacion hecha en delphi 5 y interbase 7.1. No va demasiado fina. Tengo unas 200 megas de datos.
Ultimamente me estan planteando mis jefes de migrar porque el rendimiento es pequeño, sobre todo al insertar datos.

Debo migrar a firebir 1.5 o no vale la pena?


Gracias a todos los del foro.

__marcsc 03-07-2004 11:24:33

Hola,

aunque no he trabajado profesionalmente con Interbase sí que he hablado con mucha gente que lo hace y que están contentos. Una BD de 200 Mb creo que no es gran cosa para un SGBD como Interbase, y si dices que tienes problemas de rendimiento en las inserciones me inclino a pensar que la causa es otra, ya sea tu red, o el modo en que se hacen estas inserciones.

Qué componentes de acceso utilizas? Qué método utilizas para realizar dichas inserciones? Si nos das más detalles quizás haya gente que pueda ayudarte.

Saludos.

carlomagno 03-07-2004 12:12:00

Gracias por ayudarme

Utilizo los componentes nativos delphi 5 pasando por el OBDC de EasySoft y hago inserciones via TTable normalmente.

Gracias

AdrianD 03-07-2004 14:42:58

En el modo que haces las inserciones hay varios problemas:
- Estas utilizando ODBC y no componentes nativos que van mucho mas rápido.
- Las inserciones deberías hacerlas con sentencias SQL ya sea a travez de un componente TQuery o con procedimientos almacenados.
- Las bases de datos Cliente/Servidor como Interbase/Firebird no fueron diseñadas para trabajar como las hace trabajar un TTable

Si te sirve de referencia tengo 4 servidores con Firebird cada uno de ellos con 5 a 10 puestos de facturación permanente, las bases de datos rondan los 300 mb y nunca hubo problemas de rendimiento.

Espero haber ayudado

carlomagno 05-07-2004 10:57:38

gracias por tu ayuda

que componentes me recomiendas. No me importa si son de pago.

Gydba 05-07-2004 13:48:11

Buenas,

Yo utilizo los FibPlus (http://www.fibplus.net/) pero también tenés los IBO (http://www.ibobjects.com/) de los cuales he escuchado excelentes comentarios. Ambos comercieles.

Otras opciones son los UIB (www.progdigy.com/UIB/) o los MDO (Este ultimo ha venido mejorando bastante en su ultima versión 0.8.8 puesto que da soporte para utilizar las dll de Firebird. Su web es: http://sourceforge.net/projects/mdo/)

Actualmente estoy pensando en pasarme a DBExpress por un tema de flexiblidad, pero no he tenido tiempo de probar demasiado sobre el tema. De todas formas hay gente en el foro que podrá ayudarte si es que elegís estos ultimos.

En cuanto a lo de el rendimiento de Interbase/Firebird se viene hablando bastante por el foro, diría que una búsqueda por el mismo podría aclararte muchas cosas y darte algunas ideas.

AdrianD 05-07-2004 13:51:58

Actualmente estoy usando los ibexpress, que vienen con Delphi, pero estoy probando los FibPlus y van realmente bien.

ACK 05-07-2004 14:00:35

Yo utilizo las FIBPLUS, y son bastante buenas. Te recomiendo que las pruebes, el problema es que son de pago.

Saludos.

guillotmarc 05-07-2004 14:10:39

Hola.

Para Interbase te recomiendo los mismos IBX que vienen con Delphi, y para Firebird te recomiendo IBO o FIBPlus (aunque también puedes utilizar IBX, en el futuro podrias encontrar problemas de compatibilidad).

Además de los consejos citados por los compañeros, si tienes alguna consulta que va lenta, se soluciona añadiendo los índices adecuados en las tablas correspondientes.

Saludos.

carlomagno 06-07-2004 10:06:29

mi problema no son las consultas sino las inserciones. La primera insercion me va muy lenta y las siguientes mejoran pero tardan. Es una caja de una tienda por lo que la vecidad es importante.

Por el momento tengo
- no cambiar de interbase a Firebird ya que no notaria demasiado cambio
- utilizar IBX mejor que FIBPLUS
- utilizar TQuery en vez de TTable

Gracias a todos por vuestra ayuda

Alguna sugerencia mas

ACK 06-07-2004 11:24:57

¿Tienes triggers en la inserción?

Si fuera así, puede que tengas alguna consulta u operación en el trigger, que sea la que relentiza dicha inserción.

Saludos.

carlomagno 06-07-2004 11:49:35

tengo un trigger de update.

Puede que sea esto. Voy a quitarlo a ver que pasa.

guillotmarc 06-07-2004 13:10:58

Hola.

No va a pasar nada. Un trigger de update no se ejecuta en una inserción.

Está claro que tu problema está en utilizar componentes TTable. Deberías realizar las inserciones con TQuerys, y seria mejor que utilizes componentes IBX, FibPlus o IBO en lugar de BDE.

Saludos.

carlomagno 06-07-2004 13:17:29

gracias Marc por tu ayuda. Voy a probar con IBX

rastafarey 06-07-2004 17:05:13

Acelarando la insercion
 
terecomiendo IBO yo losuso comercialmente
fiplus son bueno pero cuando la dta es muy grande comiensa a quedarse al contrario de ibo

Y para solucionar la insercion puedes hacerlo con un script.

Explico Supongamo sque quieres insert 100 registros no hagas el insert un a uno si de un avez

Ejemplo de codigo

Código:

  //ejemplo usan do ibo con ibx tabien se puede pero...
  with ti_scrip.create do begin
      ib_connection := la coneccion que usas
      sql.add('inset into x values x'); //registro 1
      sql.add('inset into x values x'); //registro 2
      .
      .
      .
      sql.add('inset into x values x'); //registro n-1
      sql.add('inset into x values x'); //registro n
      execute;
  end;

coneste codigo agregas los registro a insertar y despues lo ejecutas y solo envias una intruccion al servidor.

espero te sea de utilidad.


La franja horaria es GMT +2. Ahora son las 00:20:35.

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