FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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..... |
#2
|
||||
|
||||
Hola,
Cita:
Cita:
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. |
#3
|
|||
|
|||
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.... |
#4
|
||||
|
||||
Hola,
Cita:
Cita:
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:
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:
Saludos. |
#5
|
|||
|
|||
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..... |
#6
|
||||
|
||||
Hola,
Cita:
* 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:
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. |
|
|
|