Autor |
Beitrag |
hansa
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Do 30.10.03 19:13
Hi,
ich lese des öfteren, daß es schlecht sei, eine Datenmenge oft zu öffnen und zu schließen. Aber wie hängt das in Zusammenhang mit der vom Server angeforderten Menge ? Wenn ich einzelne Datensätze aus vielen Tabellen abrufe, dann muß ich ja auch die Anforderung neu absenden. Aber es sind keine MB. Wirkt sich also die Menge aus, oder geht es nur ums öffnen oder schließen der Datenmenge 
_________________ Gruß
Hansa
|
|
UGrohne
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Do 30.10.03 23:36
Man sollte die Datenmenge auf das Nötigste begrenzen, das Schlechteste ist meist ein "SELECT * FROM tabelle", weil man normalerweise nicht alles braucht. Damit einhergeht natürlich dann auch die Sache, dass man vermeiden sollte, öfters dieselben Daten abzurufen.
Nur eine Sache ist etwas, dass einen DB-Server u.U. ziemliche langsam machen könnte: Wenn man immer CommitRetainings verwendet oder Transaktionen nicht ab und zu committed. Denn jede weitere Transaktion sorgt für eine Erhöhung des Transaktionszählers. Und damit wird die Differenz zwischen OIT (Oldest Interesting Transaction) und der aktuellsten immer größer. Jede Transaktion muss dann bei einer Datenabfrage überprüft werdne, ob sie nicht irgendwelche Daten für die Abfrage hat.
Deswegen öfters ein Commit, auch wenns ein zeitgesteuertes ist.
|
|
hansa 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Fr 31.10.03 00:43
Delphi-Quelltext 1:
| Wirkt sich also die Menge aus, oder geht es nur ums öffnen oder schließen der Datenmenge |
Darum gehts mir. Der * ist schon klar.
_________________ Gruß
Hansa
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: Fr 31.10.03 10:35
Kurz und knapp : Beides.
Auch wenn du nur 3 Datensätze anforderst, benötigt der Server etwas Zeit, um diese Datensätze aus der Gesamtmenge zu ermitteln (je nach Indizierung/Datenmenge).
Deshalb benutze ich gerne Clientdatasets. Da holt man die benötigte Datenmenge, arbeitet dann die ganze Zeit damit, und nach einer Viertelstunde schiebt man die Änderungen auf den Server.
Cu,
Udontknow
|
|
hansa 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Fr 31.10.03 12:52
Hi,
hört sich interessant an, kannst Du das mal näher erläutern ?
_________________ Gruß
Hansa
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: Fr 31.10.03 13:24
Puuh... Das ist ein großes Thema. Vielleicht schmökerst du einfach mal ein bisschen in der Hilfe, wenn du dann konkrete Fragen hast, beantworte ich sie gerne.
So viel sei gesagt:
Ein Clientdataset spielt die Änderungen an der Datenmenge nicht sofort zurück zum Server, sondern puffert sie. Man kann also hunderte von Posts machen, ohne eine aktive Verbindung zum Server zu benötigen. Anschliessend ruft man ApplyUpdates auf, um sämtlich Änderungen in einem Zug auf die DB zu überspielen.
Cu,
Udontknow
|
|
hansa 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Mo 03.11.03 14:51
Hier ist noch eine Aussage von FIBplus:
Zitat: | The only information about FIBClientDataSet and FIBProvider is that they are working well with INT64 fields. This is the only reason to use these components instead of standard ones.
|
Hört sich nicht so an, als wenn die Dinger wichtig wären.
_________________ Gruß
Hansa
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: Mo 03.11.03 15:54
Öh... Wie bitte? Wieso FIBPlus?
Wohl verpostet, wie?
Cu,
Udontknow
|
|
hansa 
      
Beiträge: 3079
Erhaltene Danke: 9
|
Verfasst: Mo 03.11.03 19:14
nix verkompostiert.  Kennst Du das nicht ? Ersatz für IBX wegen Firebird. Ist aber alles abgeleitet von den IB-Kompos.
_________________ Gruß
Hansa
|
|
Udontknow
      
Beiträge: 2596
Win7
D2006 WIN32, .NET (C#)
|
Verfasst: Mo 03.11.03 20:44
Ahso, FIBClientdatasets. Jetzt checke ich es.
Wer hat denn diese Aussage getroffen? Sieht nämlich ganz danach aus, als ob einer nur flüchtig drauf gekuckt hätte.
Cu,
Udontknow
|
|