Z hlediska odezvy jsou velmi důležitá nastavení týkající se vytvoření datové sady na serveru a její následný přenos na klientskou stanici.
Volba typu DB kurzoru
FireDAC umožňuje volbu typu kurzoru prostřednictvím parametru "CursorKind".Parametr "CursorKind" má dopad na:
Čas potřebný pro načtení prvního záznamu výsledkové sady
Čas potřebný pro načtení kompletní výsledkové sady
Možnost současného otevření více kurzorů
Stabilitu (neměnnost) kurzoru
Nároky na systémové prostředky databázového stroje
- ckAutomatic - Typ kurzoru je vybrán automaticky na základě nastavení ostatních parametrů.
- ckDefault - Obsahuje záznamy, které odpovídaly dotazu v okamžiku jeho spuštění. Načtení prvního záznamu může být pomalejší, protože se na klienta přesouvá celá výsledková sada. Celkově je ale rychlejší.
- ckDynamic - Dynamický serverový kursor reflektuje změny způsobené aktualizacemi, které proběhly po dobu kdy je kurzor aktivní. Načtení prvního záznamu je rychlé, získání celé výsledkové sady může být pomalejší.
- ckStatic - Statický serverový kurzor obsahuje záznamy, které odpovídaly dotazu v okamžiku jeho spuštění.
- ckForwardOnly - Jednosměrný serverový kurzor. Uvolňuje již použité záznamy, takže šetří paměť. Parametr "Unidirectional" musí být "True".
Příklad Delphi
procedure TForm1.Button1Click(Sender: TObject); begin // Nastavení typu kurzoru na úrovni připojení FDConnection.Connected := False; FDConnection.FetchOptions.CursorKind := ckStatic; FDConnection.Connected := True; end;
Příklad C++ Builder
void __fastcall TForm1::Button1Click(TObject *Sender) { // Nastavení typu kurzoru na úrovni komponenty FDQuery FDQuery->Active = False; FDQuery->FetchOptions->CursorKind = ckAutomatic; FDQuery->Active = True; }
Způsob práce s kurzorem
Parametr "Unidirectional" určuje, zda se lze v kurzoru pohybovat oběma směry, tedy dopředu i zpět. Standardně je má parametr nastavenu hodnotu "False", kdy je povolen i zpětný pohyb. Pokud je nastaven na "True", šetří se systémové zdroje (již zpracované záznamy jsou uvolněny z paměti), ale například při použití komponenty "DBGrid" vyvolá přesun na předchozí záznam chybové hlášení.Uvolnění kurzoru
Databázový stroj udržuje kurzor dokud není datová sada uzavřena, nebo není uvolněn objekt, který je jejím správcem. Parametr "AutoClose", pokud je nastaven na "True", uvolní kurzor ihned po načtení posledního záznamu.Pozor! Jestliže příkaz vrací více datových sad, musí být tento parametr nastaven na "False", jinak dojde k uzavření kurzoru po načtení všech záznamů první datové sady a další sady již načteny nebudou!
Žádné komentáře:
Okomentovat