Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-10-2012
mcs mcs is offline
Miembro
 
Registrado: may 2007
Ubicación: Girona
Posts: 229
Poder: 18
mcs Va por buen camino
Firebird - Inserts lentísimos en Linux

Hola,

Tenía un sistema de TPV usando Firebird Embedded. El sistema iba perfectamente, pero por motivos de seguridad y centralización de datos he decidido poner toda la base de datos en un servidor Ubuntu Server LTS de 64bits (el último, no sé el número de versión).

El caso es que ahora la inserción, modificación y borrado de datos es LENTÍSIMO. O sea, una operación que antes era instantánea, ahora tarda 1 o 2 segundos en realizarse (estamos hablando de insertar TRES registros en dos tablas distintas, de unos 5 o 10 campos, y con sólo un índice primario en cada tabla).

Por otra parte, los selects, ya sean simples, de múltiples tablas o los que sea, son instantáneos. Cómo si se estuviera ejecutando en local.

La verdad es que es la primera vez que instalo un Firebird sobre Linux, y no sé que puedo hacer para mejorar el rendimiento de este... Hace tiempo ya prové el Firebird corriendo en un servidor Windows 2003 (mismo hardware que el que usa Linux), y funcionaba sin problemas y a un rendimiento normal...

Los componentes de acceso a datos son los IBDAC, y uso Delphi 2010. El Firebird es un 2.1, y la DLL de conexión (Client Library) tambien es una 2.1.

Ah, para insertar, modificar, etc, no uso los típicos IBTable.Open, IBTable.Update, IBTable.Post, etc, sinó que uso sentencias SQL. Lo único, es que siempre uso parámetros (("INSERT INTO t1 (x, y, z) VALUES (:X, :Y, :Z)").

Alguien me puede ayudar a mejorar este problema?
Responder Con Cita
  #2  
Antiguo 01-10-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Creo que no das ninguna información para que podamos ayudarte.
Sí, vale, que has montado un servidor linux y usas ibdac, pero ¿qué hacemos con esa información?

No sé, para empezar e ir preguntando algo: ¿Qué versión exacta de firebird has montado en todos los equipos?, ¿has hecho un backup transportable y has restaurado antes de instalar la nueva versión?
Responder Con Cita
  #3  
Antiguo 01-10-2012
mcs mcs is offline
Miembro
 
Registrado: may 2007
Ubicación: Girona
Posts: 229
Poder: 18
mcs Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Creo que no das ninguna información para que podamos ayudarte.
Sí, vale, que has montado un servidor linux y usas ibdac, pero ¿qué hacemos con esa información?
Pues la verdad, no sé qué más quieres que te diga... Lo único que no te he dicho es la versión del Ubuntu, que es un 12.04 LTS.

Cita:
No sé, para empezar e ir preguntando algo: ¿Qué versión exacta de firebird has montado en todos los equipos?, ¿has hecho un backup transportable y has restaurado antes de instalar la nueva versión?
En EL equipo cliente (ahora mismo sólo hay una máquina que usa esta base de datos, la librería de conexión es exactamente la 2.1.3.18185, de 22 de julio de 2009.

Y no, lo único que he hecho es copiar el FDB de una máquina a la otra y he corregido los permisos de este. Probaré lo del backup transportable.
Responder Con Cita
  #4  
Antiguo 01-10-2012
mcs mcs is offline
Miembro
 
Registrado: may 2007
Ubicación: Girona
Posts: 229
Poder: 18
mcs Va por buen camino
Con backup transportable va igual de mal.
Responder Con Cita
  #5  
Antiguo 01-10-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Veamos, es un poco dar palos de ciego, pero vamos a hacer una prueba.
Abre el ibexpert, flamerobin o el que uses.
Crea una conexión a la base de datos del servidor.
Ejecuta un insert cualquiera de los que te resultan lentos:
Código SQL [-]
insert into tbTabla values (111,'hola',12)
Le das a commit y calcula cuánto ha tardado.
¿Ha tardado mucho, poco, no has notado diferencia?...
Responder Con Cita
  #6  
Antiguo 01-10-2012
mcs mcs is offline
Miembro
 
Registrado: may 2007
Ubicación: Girona
Posts: 229
Poder: 18
mcs Va por buen camino
he usado el ISQL (dime prehistórico :P), y el insert ha sido instantáneo... cosa que me alegra mucho!

voy a ver la configuración del IBDAC a ver si es todo correcto y tal...

Podría ser cosa de las transacciones? En el componente TIBDatabase hay un apartado que se llama DefaultTransaction. Dentro de este apartado, las opciones son:
- Active (boolean), ahora está a false
- DefaultCloseAction, ahora está en taRollback, y puede ser taCommit, taCommitRetaining, taRollback y taRollbackRetaining
- IsolationLevel, ahora está en iblReadCommited, y puede ser iblCustom, iblReadCommited, iblReadOnlyReadCommited, iblReadOnlyTableStability, iblSnapshot, iblTableStability
- Params (Strings), no veo que se pueda cambiar
- Tag

Y lo que no entiendo es que hace tiempo, usando los mismos componentes, pasé una aplicación de FB embedded a FB "normal", y no tuve ningún problema de rendimiento...
Responder Con Cita
  #7  
Antiguo 03-10-2012
cointec cointec is offline
Miembro
 
Registrado: jul 2004
Ubicación: Alicante-España
Posts: 76
Poder: 20
cointec Va por buen camino
Hola, he visto en bastantes foros los problemas de rendimiento con Firebird en Linux con ext4, ya que tiene activo por defecto el parámetro barriers.

Creo que se recomienda para firebird, ext3 y barriers desactivo. No utilizo Linux, por lo que no tengo experiencia con el, pero puedes buscar en Google y hay bastante documentación al respecto. Te pongo un ejemplo de un hilo donde se habla del tema.

http://firebird.1100200.n4.nabble.co...td3775089.html
__________________
Un saludo, Jesus García
Responder Con Cita
  #8  
Antiguo 03-10-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
En general, ext3 es más rápido que ext4, ciertamente, aunque lo que comentan ese enlace que has puesto es sobre la creación de una base de datos, principalmente, no en el trabajo con ella (insert, update, delete, etc.)
Puestos a cambiar, reiserfs es más rápido que ext3, pero ext4 es más seguro que ext3 y ext3 es más seguro que reiserfs.
De todas formas, bastantes empresas/clientes de mi extrabajo usan ext4 y no tienen ningún problema.

Aquí hay que empezar por lo comentado antes y por el mensaje de mightydragonlor: "Si ejecutas instrucciones SQL en FlameRobin, isql o el ibexpert y van bien, el problema está en tu aplicación, Red, DNS o en mil variables mas, exceptuando Firebird."

Es que no se puede pretender obtener el máximo de rendimiento conectando por wifi.
Responder Con Cita
  #9  
Antiguo 03-10-2012
mcs mcs is offline
Miembro
 
Registrado: may 2007
Ubicación: Girona
Posts: 229
Poder: 18
mcs Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Es que no se puede pretender obtener el máximo de rendimiento conectando por wifi.
vamos a ver, si puedo hacer un select * de una tabla de 1500 registros en menos de medio segundo, y para insertar un j**** registro de menos de 30 bytes tarda más de 2 segundos, SEGURÍSIMO que el problema no es el wifi.
Responder Con Cita
  #10  
Antiguo 03-10-2012
Avatar de mightydragonlor
[mightydragonlor] mightydragonlor is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Medellín-Colombia
Posts: 587
Poder: 18
mightydragonlor Va por buen camino
Cita:
Empezado por mcs Ver Mensaje
vamos a ver, si puedo hacer un select * de una tabla de 1500 registros en menos de medio segundo, y para insertar un j**** registro de menos de 30 bytes tarda más de 2 segundos, SEGURÍSIMO que el problema no es el wifi.
Por mi experiencia puedo asgurar que una conexión por wifi no se puede establecer como medida de comparación, ya que esta depende de muchas mas variables que el cable, por otro lado, ya tuve una experiencia con esto, una aplicativo web, que estaba presentando "problemas" de lentidud en consultas y actualizaciones, pero que al acceder directamente el administrador de base de datos, todo funcionaba perfecto, así que el problema, nunca fue ´la base de datos, luego tuvimos que revisar la aplicación, siempre lo hicimos por cable, y funcionata todo perfecto, al final se descubrión que el wifi estaba generando el problema.
Las variables son muchas, pero si te centras en tu parecer, no vas a llegar a nada, por que esto no se trata del parecer de nadie, sino en hacer pruebas precisas para determinar el problema.

Saludos.
__________________
mas confundido que Garavito el día del Niño.
Responder Con Cita
  #11  
Antiguo 03-10-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Veamos, esto es muy fácil de comprobar.
Te vas al servidor.
Una vez allí, abres el isql.
Conectas a la BD.
Ejecutas un insert.
Si es inmediato ya sabes que el problema no está en el servidor.
Responder Con Cita
  #12  
Antiguo 04-10-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Veamos, esto es muy fácil de comprobar.
Te vas al servidor.
Una vez allí, abres el isql.
Conectas a la BD.
Ejecutas un insert.
Si es inmediato ya sabes que el problema no está en el servidor.
¿Has hecho la prueba?
Responder Con Cita
  #13  
Antiguo 04-10-2012
cointec cointec is offline
Miembro
 
Registrado: jul 2004
Ubicación: Alicante-España
Posts: 76
Poder: 20
cointec Va por buen camino
Cita:
Empezado por mcs Ver Mensaje
vamos a ver, si puedo hacer un select * de una tabla de 1500 registros en menos de medio segundo, y para insertar un j**** registro de menos de 30 bytes tarda más de 2 segundos, SEGURÍSIMO que el problema no es el wifi.
Estoy de acuerdo contigo es obvio. Has probado el cambio del sistema de archivos?. Otra prueba simple es instalar Firebird en un PC Windows y probar desde otro equipo las mismas acciones.
__________________
Un saludo, Jesus García
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
Firebird mal rendimiento en linux rastafarey Firebird e Interbase 26 11-06-2008 19:52:49
Firebird en Linux luiz_leo Conexión con bases de datos 3 07-08-2007 11:30:28
firebird on linux julyus Conexión con bases de datos 1 28-05-2007 19:41:32
FireBird se Duerme en Linux teletranx Linux 3 17-11-2004 21:39:53
Firebird en Linux edy_aca Firebird e Interbase 3 01-10-2004 16:47:51


La franja horaria es GMT +2. Ahora son las 01:28:56.


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