AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi FireDAC, onDemand, DeadLock
Thema durchsuchen
Ansicht
Themen-Optionen

FireDAC, onDemand, DeadLock

Ein Thema von haentschman · begonnen am 8. Jul 2018 · letzter Beitrag vom 10. Jul 2018
Antwort Antwort
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.603 Beiträge
 
Delphi 12 Athens
 
#1

AW: FireDAC, onDemand, DeadLock

  Alt 8. Jul 2018, 14:04
Aber mit fmAll passiert es nicht.
Bei fmAll werden alle Datensätze an den Client übertragen und der Cursor danach freigegeben. Daher kommt es in diesem Fall nicht zu einem Deadlock. Bei fmDemand bleibt der Cursor aber offen, damit die Next Calls auch klappen.

Ich würde es zunächst auch erstmal mit einem ckStatic Cursor versuchen. Der arbeitet auf einem temporären Snapshot und macht auch keine Locks. Das verlagert den Speicherbedarf allerdings auf den Server, aber der kann da in der Regel besser mit umgehen.

Es gilt aber zu beachten, daß auch bei fmDemand der lokale Speicher ziemlich anwachsen kann, wenn mit den Next-Calls dann doch alle Datensätze irgendwann im Speicher liegen. Dann hilft nur Unidirectional auf True zu setzen, damit der Speicher für die vorigen Datensätze auch gleich freigegeben wird. Sollte das nicht gehen, musst du dir ein Verfahren aussuchen, bei dem die Result-Sets kleiner werden.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.429 Beiträge
 
Delphi 12 Athens
 
#2

AW: FireDAC, onDemand, DeadLock

  Alt 8. Jul 2018, 14:38
Danke für die Info...
Zitat:
Sollte das nicht gehen, musst du dir ein Verfahren aussuchen, bei dem die Result-Sets kleiner werden.
...ist schon im Plan. Aber ich muß erst mal eine einigermaßen lauffähige Version schaffen um darauf aufzubauen.
Zitat:
Bei fmDemand bleibt der Cursor aber offen, damit die Next Calls auch klappen.
...das hatte ich auch so verstanden. Ich hatte aber gehofft, daß die FireDAC das irgendwie managen. (offener Cursor)
Zitat:
Ich würde es zunächst auch erstmal mit einem ckStatic Cursor versuchen. Der arbeitet auf einem temporären Snapshot und macht auch keine Locks.
...könntst du das noch mal genauer erklären? Was ist beim serverseitigem Cursor zu beachten?

Nachtrag:
Ich habe nun alle Cursor Versionen durch...das einzige was die Anwendung lädt: ckDefault(ckAutomatik) + fmAll aber mit großem Speicher. Alles mit serverseitigem Cursor kam mit "Invalid Cursor", beim Öffnen der Query , oder "ich mach dann mal nix mehr" mit SQL Eieruhr.

Alles ist nicht zufriedenstellend...

Geändert von haentschman ( 8. Jul 2018 um 16:11 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz