AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi [ADO] MaxRecords bzw. CacheSize
Thema durchsuchen
Ansicht
Themen-Optionen

[ADO] MaxRecords bzw. CacheSize

Ein Thema von MrSpock · begonnen am 30. Mär 2014 · letzter Beitrag vom 4. Apr 2014
Antwort Antwort
arnof

Registriert seit: 25. Apr 2013
1.252 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

AW: [ADO] MaxRecords bzw. CacheSize

  Alt 2. Apr 2014, 19:06
Schau Dir mal im Taskmanager deine Exee beim Kunden an, wenn die richtig 2GB geht dann ist OutofM....

Er läd alle Datensätze, wieviele sind das denn 100.000 oder 1.000.000 (Select Count(*) from xxx)
Wie gesagt, es sind 5400 Datensätze, aber wir haben uns den Taskmanager angeschaut. Das System ADO -> ODBC -> KHK MySQL saugt sich voll. Der Speicherverbrauch geht auf 1.8 GB, dann kommt die Fehlermeldung. Selbst wenn ich nur ca. 500 Datensätze einlese (eingeschränkt über die KundenNummer) kommt der Speicherfehler!

Wieso ist das Verhalten anders als bei mir auf dem Einzelplatzrechner
Weiter oben hatte ich dir die Lösung geschrieben!
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#2

AW: [ADO] MaxRecords bzw. CacheSize

  Alt 3. Apr 2014, 12:33
Danke nochmal für den Hinweis. Hatte deinen Beitrag tatsächlich übersehen.

Habe mein Testprogramm jetzt gemäß deiner Empfehlung angepasst und es scheint zu funktionieren! Ich habe jetzt nur die Spalten abgerufen, die ich auchtatsächlich benötige. Die letzte Bestätigung brauche ich noch von einem Mitarbeiter, aber es sieht erstmal gut aus!

Unverständlich bleibt für mich, dass der Fehler im ODBC Treiber wohl noch nicht bekannt ist und dass er nur im Kundennetz, aber nicht auf meinem Einplatzrechner auftritt.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
arnof

Registriert seit: 25. Apr 2013
1.252 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

AW: [ADO] MaxRecords bzw. CacheSize

  Alt 3. Apr 2014, 14:05
Das Problem hängt an Inhalt des Feldes und tritt nur auf, wenn eine kritische Länge überschritten wird. Wenn Du ein Backup der Datenbank holst, dann wirst Du es sehen!


Hier mal mein Beispiel wie ich das gelöst habe:


Delphi-Quellcode:

 Unit Data.WIN.ADODB

procedure TCustomADODataSet.InternalInitFieldDefs;
...

  procedure AddFieldDef(F: Field; FieldDefs: TFieldDefs);
  var
    ....
    // echte Abfrage
    FieldType := ADOTypeToFieldType(F.Type_, F.Precision, F.NumericScale, EnableBCD);
    //
    if (F.Name='Problemfeldname') then begin
     FieldType := ftMemo;
    end;
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#4

AW: [ADO] MaxRecords bzw. CacheSize

  Alt 3. Apr 2014, 17:32
Das habe ich jetzt nicht verstanden.

Wo bzw. wie sehe ich das in einem Backup der DB?

Und die Lösung verstehe ich auch nicht. Hast du eine Neue ADO Komponente von der alten abgeleitet und dort die angegebene Methode überschrieben?
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
arnof

Registriert seit: 25. Apr 2013
1.252 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

AW: [ADO] MaxRecords bzw. CacheSize

  Alt 4. Apr 2014, 10:34
Zitat:
Das Problem hängt an Inhalt des Feldes und tritt nur auf, wenn eine kritische Länge überschritten wird. Wenn Du ein Backup der Datenbank holst, dann wirst Du es sehen!


Hier mal mein Beispiel wie ich das gelöst habe:


Delphi-Quellcode:

 Unit Data.WIN.ADODB

procedure TCustomADODataSet.InternalInitFieldDefs;
...

  procedure AddFieldDef(F: Field; FieldDefs: TFieldDefs);
  var
    ....
    // echte Abfrage
    FieldType := ADOTypeToFieldType(F.Type_, F.Precision, F.NumericScale, EnableBCD);
    //
    if (F.Name='Problemfeldname') then begin
     FieldType := ftMemo;
    end;

Das habe ich jetzt nicht verstanden.

Wo bzw. wie sehe ich das in einem Backup der DB?

Und die Lösung verstehe ich auch nicht. Hast du eine Neue ADO Komponente von der alten abgeleitet und dort die angegebene Methode überschrieben?
1. Datensicherung: es liegt an dem Inhalt der Datenbank, deshalb geht es bei Dir und beim Kunden nicht: nur mit dem Kunden seiner Datensicherung wirst Du es auch bei Dir feststellen können.

2. Obiger Quelltext: das ist ein direkter Eingriff in den Delphiquellcode, wenn man weis was man da tut, kanns helfen
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#6

AW: [ADO] MaxRecords bzw. CacheSize

  Alt 4. Apr 2014, 12:00
OK, danke. Jetzt habe ich beides verstanden
Albert
Live long and prosper


MrSpock
  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:24 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