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 11-09-2003
Rabata Rabata is offline
Miembro
 
Registrado: jul 2003
Posts: 167
Poder: 21
Rabata Va por buen camino
Question Problemas Con IbTable, Interbase

Mi Duda es la Siguiente:

Alguien sabría decirme pq mi conexión a una tabla interbase a través de componentes TIBTable, me va tan lento cuando la base de datos esta en un PC remoto (no en Local)

La verdad es k me tarda entre 1 - 2 Segundos cada vez qure abro una tabla, y al ser cliente - servidor hago muchos Refresh y me tarda otros tantos....

Ejemplo de Código:


Procedure Refresca();
Begin
With Dm_local Do
Begin
If Transaction.InTransaction Then
Transaction.CommitRetaining
Else
Transaction.StartTransaction;

Garantia.Refresh;

End;

Revisa_Perfil();

End;


Utilizo el CommitRetaining para que no me cierre la Transacción sino sería aún más lento....

Cuando Realizo el refresh y Open me tarda mucho en remoto, mientras k si la Base de datos está en Local me va como un tiro..

Alguién me podría indicar algo o echarme una mano, aunke sea el cuello, pero k me solucione el probelma.......jejejeje


Muchas Gracias a los colaboradores.....
Responder Con Cita
  #2  
Antiguo 11-09-2003
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 24
kinobi Va por buen camino
Hola,

Cita:
Posteado originalmente por Rabata
La verdad es k me tarda entre 1 - 2 Segundos cada vez qure abro una tabla,
no considero que 1-2 segundos sea mucho tiempo para abrir un cursor en un entorno cliente/servidor.

Cita:
Posteado originalmente por Rabata
y al ser cliente - servidor hago muchos Refresh y me tarda otros tantos....
no encuentro la relación entre un entorno cliente/servidor y tener que hacer muchos "Refresh" en los Datasets clientes, más bien al contrario.

Si buscas en hilos antiguos (puedes utilizar el buscador) encontrarás varios en los foros de "Interbase y Firebird" y "Conexión con bases de datos" donde se trata el tema.

Saludos.
Responder Con Cita
  #3  
Antiguo 12-09-2003
Rabata Rabata is offline
Miembro
 
Registrado: jul 2003
Posts: 167
Poder: 21
Rabata Va por buen camino
Mi intención es k cuando un cliente introduzca datos, le aparezca lo k hay en realidad en la base de datos.

Por eso es mi intención de utilizar REFRESH para k cada vez k haya una insercción o modificación de otro cliente, le aparezca al usuario en pantalla en cuanto k el almacene, ya k son varios cliente a la vez y kieren tener la información en pantalla k hayan podido introducir los demas terminales.

En cuanto a lo del tiempo (1-2) seg. si me conecto utilizando el BDE de delphi (TTable,TDataBase) me es instántaneo....

Lo k he apreciado es k con el IBConsole de Interbase cuando hago un Refresh Data a un Pc remoto me tarda 1 - 2 Segundos (en Local es inmediato), mientras k si lo configuró por el Sql Explorer, el refesco es inmediato..... Para acceso remoto Utilizó TCP

Yo kreo k el problema esta en la configuración de mi base de datos (gestión de administración de Interbase), pero por k con el bde(TTable) es tan rápido y con el TIBTable es tan lento si los 2 acceden a interbase....
Responder Con Cita
  #4  
Antiguo 12-09-2003
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 24
kinobi Va por buen camino
Hola,

Cita:
Posteado originalmente por Rabata
Mi intención es k cuando un cliente introduzca datos, le aparezca lo k hay en realidad en la base de datos.
Esa declaración de intenciones creo que la tenemos todos.

Cita:
Posteado originalmente por Rabata
Por eso es mi intención de utilizar REFRESH para k cada vez k haya una insercción o modificación de otro cliente, le aparezca al usuario en pantalla en cuanto k el almacene, ya k son varios cliente a la vez y kieren tener la información en pantalla k hayan podido introducir los demas terminales.
Un par de comentarios:

1. El método Refresh de los Dataset's IBX sólo refresca el registro activo (sobre el que está en ese momento el Dataset), pero no el resto de registros del Dataset.

2. El "refresco" (relanzando la consulta que alimenta al Dataset) sólo permite ver los cambios hechos desde otras transacciones concurrentes si éstas han sido confirmadas y la transacción tiene un nivel de aislamiento read_commited (por defecto TIBTransaction lo fija a Snapshot, el más alto y que más aisla a la transacción).

Cita:
Posteado originalmente por Rabata
En cuanto a lo del tiempo (1-2) seg. si me conecto utilizando el BDE de delphi (TTable,TDataBase) me es instántaneo....
¿Algún tipo de caché utilizando BDE?. De todas formas, 1 ó 2 segundos para conectarse a una base de datos no me parece un tiempo excesivo.

Otra cosa: hace tiempo que no utilizo IBX, pero los Dataset's IBX utilizan una estrategia de solicitud de registros al servidor bajo demanda, pasándole éste (si no recuerdo mal) bloques de registros según las necesidades del Dataset. Creo que existe una propiedad que fija el número de registros por bloque. Tal vez bajando ese número consigas mejores resultados. Lo siento, no recuerdo el nombre de la propiedad (tendrás que tirar de la ayuda en línea).

Cita:
Posteado originalmente por Rabata
Yo kreo k el problema esta en la configuración de mi base de datos (gestión de administración de Interbase), pero por k con el bde(TTable) es tan rápido y con el TIBTable es tan lento si los 2 acceden a interbase....
TIBTable es un componente que existe sólo por compatibilidad con BDE. El propio Jeff Overcash (el desarrollador principal actual de IBX) se ha pronunciado múltiples veces desaconsejando el uso de TIBTable, entre otras razones, por problemas de rendimiento.

Saludos.
Responder Con Cita
  #5  
Antiguo 12-09-2003
Rabata Rabata is offline
Miembro
 
Registrado: jul 2003
Posts: 167
Poder: 21
Rabata Va por buen camino
Pero lo k no llego a entender es pk si ataco a la base de datos desde el sql explorer, el refresco de datos es inmediato y si lo hago desde el ibconsole me tarda un tiempo ¿ a k se debe este retraso?

Muchas gracias por tu colaboración, me está sirviendo mucho de ayuda.....

La conclusión es k si decido utilizar de nuevo los IBX, sólo lo hare con TIBDataSet ya que son Sql Directo.....
Responder Con Cita
  #6  
Antiguo 12-09-2003
Avatar de kinobi
kinobi kinobi is offline
Miembro
 
Registrado: may 2003
Posts: 2.621
Poder: 24
kinobi Va por buen camino
Hola,

Cita:
Posteado originalmente por Rabata
Pero lo k no llego a entender es pk si ataco a la base de datos desde el sql explorer, el refresco de datos es inmediato y si lo hago desde el ibconsole me tarda un tiempo ¿ a k se debe este retraso?
seguramente a varias razones:

* IBConsole no es un producto extremadamente refinado. En origen fue escrito en C por una empresa externa a Borland (ni siquiera por gente del TeamB). Cuando Borland liberó los fuentes de InterBase 6.0 (Julio del 2000), Jeff Overcash y algunos desarrolladores más del TeamB se hicieron cargo de IBX y de IBConsole, reescribiéndolo (yo supongo que apresuradamente) a Object Pascal.

* IBX siempre ha sido muy criticado por el sistema de caché de sus Dataset's, necesario para implantar el mecanismo de bidireccionalidad, que posibilita la navegación atrás<->adelante en el Dataset.

Cita:
Posteado originalmente por Rabata
La conclusión es k si decido utilizar de nuevo los IBX, sólo lo hare con TIBDataSet ya que son Sql Directo.....
En realidad "SQL Directo" es también el BDE y cualquier otro mecanismo de acceso, ya que el servidor sólo "entiende" SQL.

Como norma general, yo utilizaría esta estrategia:

1. Para consultas en los que no sea necesario la navegación entre registros, utilizar el componente TIBSQL (el más rápido de todos). También lo utilizaría para el envío de sentencias SQL en las que no estuviesen implicados controles enlazados a datos.

2. Para consultas de sólo lectura enlazadas a controles visuales: TIBQuery.

3. Para el resto de casos: TIBDataSet

Otra opción es utilizar otros mecanismos de acceso: dbExpress, IBO, FIBPlus, ...

De todas formas, no tomes mis opiniones como concluyentes. Cada vez estoy más alejado de Delphi, y en consecuencia de IBX, BDE, dbExpress ..., por tanto mis opiniones en este tema acusan el paso del tiempo y la falta de práctica con estas herramientas.

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


La franja horaria es GMT +2. Ahora son las 00:19:02.


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