Autor Téma: Rychlost TFDTable  (Přečteno 167 krát)

Offline ShaneZB

  • Nováček
  • *
  • Příspěvků: 31
  • Karma: 0
  • HJ-SOFT s.r.o.
    • Verze Delphi: Delphi 10
Rychlost TFDTable
« kdy: 14-10-2020, 09:16:44 »
Zdar všem.
Pracujeme na opuštění BDE a to přechodem na FireDAC. Používáme databázi FireBird. Při testování nás nemile překvapilo rapidní zpomalení načtení dat oproti BDE. Možná je hlavní problém v tom, že se používá třída TTable (TFDTable) – ale vzhledem k situaci není možné se tomu vyhnout. Zkoušíme různé rady z internetu, ale nic nezabírá.
Moje osobní domněnka je, že bez ohledu na nastavení, že se RecordCount má zjišťovat podle počtu stažených dat, zjišťuje se vždy kompletní počet – nebo něco nastavuju špatně – protože „FireDAC Monitor“ vypisuje dotaz na COUNT vždy. BDE zjišťuje RecordCount až když je třeba.
Je nějaká možnost, aby TFDTable nedělal dotaz na počet záznamů ihned po Open, ale dalo se to  zjistit až na vyžádání?
Nebo - existuje nějaký jiný spolehlivý postup/nastavení pro dosažení rychlého otevření tabulky?

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 2711
  • Karma: 104
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:Rychlost TFDTable
« Odpověď #1 kdy: 14-10-2020, 10:55:17 »
Pouzivas FetchOptions.Mode := fmAll ?

Jaky je v case rozdil mezi otevrenim v TFDTable a TFDQuery?

Proc presne potrebujes TFDTable? i nad TFDQuery muzes delat updaty pres Edit a spol, jen musi byt jasny index, a jiny duvod mne nenapada.
Embarcadero MVP - Czech republic

Offline ShaneZB

  • Nováček
  • *
  • Příspěvků: 31
  • Karma: 0
  • HJ-SOFT s.r.o.
    • Verze Delphi: Delphi 10
Re:Rychlost TFDTable
« Odpověď #2 kdy: 14-10-2020, 11:14:36 »
Citace
Pouzivas FetchOptions.Mode := fmAll ?
Mám tohle nastavení:
Kód: [Vybrat]
  FetchOptions.Mode := fmOnDemand;
  FetchOptions.RowsetSize := 20;
  FetchOptions.RecordCountMode := cmFetched;

Citace
Jaky je v case rozdil mezi otevrenim v TFDTable a TFDQuery?
Záleží na velikosti tabulky - čím větší tím vetší je rozdíl - třeba i poloviční. Ale mě víc trápí rozdíl rychlosti TTable <> TFDTable.

Citace
Proc presne potrebujes TFDTable? i nad TFDQuery muzes delat updaty pres Edit a spol, jen musi byt jasny index, a jiny duvod mne nenapada.
Projekt, který překlápím je opravdu velký moloch a TTable je moc hluboko ve střevech. Používá se FindKey; GotoNerest a pod ...





Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 2711
  • Karma: 104
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:Rychlost TFDTable
« Odpověď #3 kdy: 14-10-2020, 11:30:05 »
tak zkus FetchOptions.Mode := fmAll, to je zhruba to co dela BDE

  FetchOptions.RowsetSize := jsem exprimentoval;
  FetchOptions.RecordCountMode := nemenil jsem ;
Embarcadero MVP - Czech republic

Offline ShaneZB

  • Nováček
  • *
  • Příspěvků: 31
  • Karma: 0
  • HJ-SOFT s.r.o.
    • Verze Delphi: Delphi 10
Re:Rychlost TFDTable
« Odpověď #4 kdy: 15-10-2020, 12:09:16 »
Citace
tak zkus FetchOptions.Mode := fmAll, to je zhruba to co dela BDE
To je ještě pomalejší, protože stahuje vždycky všechny záznamy v tabulce.

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 2711
  • Karma: 104
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:Rychlost TFDTable
« Odpověď #5 kdy: 15-10-2020, 12:50:54 »
Priznam se, ze jsem s TFDTable  nikdy nic moc nedalal, ale prislo mi ze se snazi vzdy stahnout vsechny data, nebo aspon ziskat jejich celkovy pocet, treba pro nastaveni scrollbaru v gridu atd. Proto jsem rikal ze ze me zkusenosti s FDQuery je vyhodnejsi pouzit fmAll s velkym RowSize nez fmDemand, protoze mi merenim prislo rychlejsi stahnout vse po velkych davkach, nez fmDemand postupne, hlavne protoze treba pri razeni na klientu se stejne stahlo vse, ale rozkouskovane.
Vic ti tedy neporadim, snad jen ze FireDac pri mereni byl fakt rychly treba proti ADO.
Embarcadero MVP - Czech republic

Offline Radek Červinka

  • Administrátoři
  • Padawan
  • *****
  • Příspěvků: 2711
  • Karma: 104
    • Verze Delphi: D2007, DXE + 2 poslední
    • O Delphi v češtině
Re:Rychlost TFDTable
« Odpověď #6 kdy: 19-10-2020, 11:02:25 »
Muzu se zeptat zda jsi na neco přišel? Pro budoucnost...
Embarcadero MVP - Czech republic