AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Beeinflussung von RowSetSize durch Öffnen anderer FDQuery
Thema durchsuchen
Ansicht
Themen-Optionen

Beeinflussung von RowSetSize durch Öffnen anderer FDQuery

Offene Frage von "MasterDetail"
Ein Thema von MasterDetail · begonnen am 6. Sep 2016 · letzter Beitrag vom 7. Sep 2016
Antwort Antwort
MasterDetail

Registriert seit: 6. Sep 2016
8 Beiträge
 
#1

Beeinflussung von RowSetSize durch Öffnen anderer FDQuery

  Alt 6. Sep 2016, 17:19
Datenbank: MySQL/MariaDB • Version: 10.1.13 • Zugriff über: FireDAC
Hallo,

Ich habe auf einer FDQuery(22k Records) die Eigenschaft RowSetSize unter FetchOptions auf 50 gesetzt
und den Mode entsprechend auf "fmOnDemand" gesetzt.

Diese FDQuery wird bei OnActivate eines Formulars geöffnet.
Wenn ich nach dem Öffnen der Query einen Haltepunkt setze, sehe ich bei den überwachten Ausdrücken mit "Table.RecordCount" auch die entsprechende Anzahl von 50 Datensätzen.
Alles in Ordnung soweit.

Jedoch muss nun, ohne darauf näher einzugehen, aufgrund bestimmter Rahmenbedingungen eine zweite FDQuery geöffnet werden.
Sobald die zweite FDQuery(1 Record) geöffnet wird, dauert es erstmal ungewöhnlich lange,
und PLOPP, auf der ersten FDQuery wurde, aus unersichtlichen Gründen, ein FetchAll ausgeführt, und die vollen 22.000 Records wurden heruntergeladen.
Somit habe ich keine Möglichkeit, die Eigenschaft RowSetSize und fmOnDemand ohne größere Umwege zu gehen zu nutzen.

Zur Info: Ich verwende Delphi 10 Seattle. Die zwei Queries befinden sich zusammen in einem von mehreren Datamodulen.
Die beiden Tabellen haben auf dem Server jeweils mind. 1 Primärschlüssel, KEINE Fremdschlüssel.
Die Tabellen stehen keineswegs in Relation. Das EINZIGE was diese Queries gemeinsam haben, ist die FDConnection die sie verwenden.
Ich habe testweise eine andere FDQuery geöffnet, es trat der gleiche Effekt auf.

Könnte das an einer Eigenschaft liegen, die in der FDQuery oder in der FDConnection festgelegt ist?
Könnt ihr das nachproduzieren?

Vielen Dank,
MasterDetail
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Beeinflussung von RowSetSize durch Öffnen anderer FDQuery

  Alt 6. Sep 2016, 17:30
As Designed.
MySQL unterstützt keine serverseitigen Curser. D.h. nur über einen Trick werden jeweils nur benötigte Datensätze abgeholt.
Wird nur eine zweite Query geöffnet muss erst alle Daten der ersten Query abgeholt werden damit die zweite Query geöffnet werden kann.

Ich würde gar nicht mit serverseitigen Curser arbeiten. Diese sind für ein DBMS immer eine ziemliche belastung da nun der Server die gesamte Ergebnismenge vorhalten muss.
Stell dir mal vor dein Programm würden 1000 User so verwenden. So müsste ein DBMS (das das unterstützt) für 1000 Verbindungen diese 22.000 Datensätze im temp-Bereich vorhalten.
Sorge lieber dafür das nur relativ wenige Datensätze (einige hundert) im "Tabellenbrowser"geholt werden.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
MasterDetail

Registriert seit: 6. Sep 2016
8 Beiträge
 
#3

AW: Beeinflussung von RowSetSize durch Öffnen anderer FDQuery

  Alt 7. Sep 2016, 16:30
Sorge lieber dafür das nur relativ wenige Datensätze (einige hundert) im "Tabellenbrowser"geholt werden.
Wie soll ich das denn bewerkstelligen, wenn durch das Ausführen einer anderen Query alle Records gefetched werden?
Und mit der RecsSkip/RecsMax-Kombination zu arbeiten ist das letzte was ich machen möchte.
Anscheinend gibt es für MySQL sowieso keinen serverseitigen Cursor laut Embarcadero,
d.h. es wird ckDefault verwendet, was ein clientseitiger Cursor ist.
  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 15:38 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz