Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi maximale Anzahl Clientdatasets (https://www.delphipraxis.net/54607-maximale-anzahl-clientdatasets.html)

Hawky 7. Okt 2005 14:19


maximale Anzahl Clientdatasets
 
Hall Alle

ich hab ein Projekt, in dem muss ich sehr viele verschiedene Clientdatasets erzeugen. Nun hat sich aber gezeigt dass in Abhaengigkeit der Anzahl der Spalten (vllt auch der Typen) die Anzahl der erstellbaren CDS begrenzt ist.

im Testprogramm 40 spalten, lassen sich max 1489 CDS (woanders wird der wert anders sein) erzeugen, reduzier ich die spaltenanzahla auf 20 gehen 2793.

ist die Zahl erreicht, stuerzt das programm mit out of memory ab. der Speicherverbruach liegt dann bei ca 110-128 MB, es waeren aber noch weit ueber 100MB speicher verfuegbar

woher kommt diese grenze? gibts nen Trick die zu umgehen?

danke fuer Hilfe

Bernhard Geyer 7. Okt 2005 16:37

Re: maximale Anzahl Clientdatasets
 
Verwende mal FastMM..
Der Delphi-Standard-Memory-Manager hat teilweise Probleme mit Speicher-Frakmentierung der Verwaltungslisten.

Hawky 7. Okt 2005 17:11

Re: maximale Anzahl Clientdatasets
 
fastMM und nexusdb haben leider auch keine verbesserung gebracht

Union 7. Okt 2005 21:22

Re: maximale Anzahl Clientdatasets
 
Zitat:

Zitat von Hawky
fastMM und nexusdb haben leider auch keine verbesserung gebracht

Vielleicht liegt das auch an der Konzeption? Kannst Du erklären, warum Du mehrere tausend (!) ClientDataSets benötigst? Soll das ein Serverprogramm werden oder was?

Hawky 7. Okt 2005 22:35

Re: maximale Anzahl Clientdatasets
 
danke fuer die hilfe

also ehrlich gesagt: das Programm ist in Borland C++
aber ich kann de Fehler in Delphi ja genauso nachvollziehen

Ist nen Applikationsserver. Das konzept ist leider gewachsen und nun werden bestimmte Daten zu veranstaltungen, die der Server schnell verwalten muss in den CDS abgespeichert. Dadurch dass nun in der Produktion immer mehr aktive Veranstaltungen dazu kommen steigt die Anzahl der CDs sehr stark (wir sind erst bei 1/3 der letztendlichen Menge), stuerzt wegen dem Speicherprogram der Serverprozess merhfach am Tag ab.

Dies ist natuerlich schlecht, deswegen gings um ne schnelle Loesung, ohne viel am Source zu aendern, dass das konzept mit den viele Dataset nich richtig ist, ist auf jeden Fal klar, laesst sich aber nicht ganz so schnell aendern.
(bin am ueberlegen, ob ne grosses Dataset mit den einzelnen Datasets als Nested ne bessere Lösung ist ...)

Haben heute schon mit tmemdataset probiert, scheint etwas besser zu sein, die frage ist aber, wann da irgendwelche anderen probleme kommen

Union 8. Okt 2005 07:55

Re: maximale Anzahl Clientdatasets
 
Und wenn Ihr das Ganze als CDS-Pool verwaltet? Also EIN CDS das alles steuert. In diesem sind die SQL-Befehle zur Erstellung der einzelnen CDS sowie Usage Counter, letzter Zugriff, Flag ob gerade aktiv usw. enthalten. In dieser Tabelle können ja durchaus Tausende von Einträgen enthalten sein. Darum liegt eine Klasse, die Du anstelle der einzelnen Datasets ansprichst. Diese kümmert sich um die Verwaltung (maximale Anzahl, freier Speicher, Schliessen der am wenigsten benutzten) usw.

Hawky 20. Okt 2005 16:59

Re: maximale Anzahl Clientdatasets
 
danke fuer eure Hilfe.

die schnellste Loesung war nun, die midas.dll von Dolphi 2005 zu verwenden (im gegensatz zu der von delphi 7 mit update)


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:20 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-2025 by Thomas Breitkreuz