Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Firedac Rapidez carga de datos (https://www.clubdelphi.com/foros/showthread.php?t=94984)

DavidSG4 14-12-2020 09:46:05

Firedac Rapidez carga de datos
 
Buenas.
sigo con mi migración a firedac que creo que es una buena opción para bastantes años...

Estoy utilizando TFDTable y aunque la carga de formularios es aceptable(utiliza algunos segundos en abrir todas las tablas del form) me gustaría poder acelerarlo mucho mas... he estado mirando fetch option para poder obtener por ejemplo los 100 últimos de las tfdtable pero no encuentro una explicación que me aclare.

he hecho varias pruebas pero la realizad es que en ningún momento gano velocidad.

En la aplicación que estoy trabajando se abren las tablas desde una clase común a todos los formularios creo que es aqui donde se demora algo la carga e datos.

Gracias

movorack 14-12-2020 14:21:08

Hola, DavidSG4.

No estás ofreciendo suficiente información.

En mi experiencia, cambiar a Firedac no fue una simple migración de componentes, cuando se pasó de BDE a Firedac. Al principio se notó algo de lentitud. También es que pasamos de una aplicación cliente-servidor a un modelo algo mas complejo.

Pero en medio de todo eso, nos dimos cuenta de varios errores de diseño tanto en la aplicación como en la base de datos. Entre ellos: consultas innecesarias y repetitivas, cargas masivas de datos de una tabla, no definir los campos de la consulta, no definir índices en las tablas.

DavidSG4 14-12-2020 17:25:27

Buenas movorack, estoy totalmente de acuerdo en todo lo que comentas.

mi problema creo que va encaminado en que se hace una carga masiva de datos ya que si hay 5 tfdtable en un formulario, el programa carga todos los datos de las tablas desde el origen de los tiempos igual que hacia con el bde.

de ahí mi consulta, ya que lo que hace le programa es tabla.active=true en todas las tablas del formulario y por lo tanto no es tan rápido como a mi me gustaría. (muy ineficiente)

una de las vías que me he planteado son las fetch options de firedac que según tenía entendido te permiten sabiendo parametrizarlo es:

1 cargar por ejemplo los 10 últimos registros de las tablas.
2 si el usuario a través del dbnavigator llega al registro 1 de los 10 precargados firedac se encarga de cargar los 10 anteriores.

yo había pensado en esta estrategia pero veo que no consigo los resultados esperados, estoy abierto a cualquier sugerencia que vosotros hayáis utilizado.

gracias

Casimiro Notevi 14-12-2020 18:49:06

Cita:

Empezado por DavidSG4 (Mensaje 539432)
el programa carga todos los datos de las tablas desde el origen de los tiempos igual que hacia con el bde.

Eso no se debe hacer nunca, con ningún tipo de componente y ni base de datos.

aledieb 15-12-2020 23:27:14

Si hay código en el afterscroll también influye (y mucho) en los tiempos de carga.
Aunque seria mejor usar Query en ves de Table.

DavidSG4 16-12-2020 09:51:40

quizás si empezara una aplicación de nuevo emplearía querys, pero es una aplicación que necesito modernizar, creo que TFDTable tiene que dar la suficiente potencia como para manejar de una manera eficiente los datos que se necesitan.

gracias.

sigo investigando con las fecht options a ver que consigo.

DavidSG4 16-12-2020 12:41:34

Buenas.
si se configuran las fetchoptions de la siguiente manera, el rendimiento es optimo.

fecthoptions.recsmax a 200. con esto el rendimiento es optimo.

Gracias


La franja horaria es GMT +2. Ahora son las 10:18:07.

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