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.261 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

AW: [ADO] MaxRecords bzw. CacheSize

  Alt 1. Apr 2014, 10:49
Mit den ODBC Treibern und MySQL ist das so eine Geschichte von Bugs ...

Es gehen hier nur bestimmte Versionen von Treibern, beim nächsten Update kann alles wieder nicht gehen, die sind sehr Buggy!

Ich benutze entweder

V3.51.27 oder den V5.1.6

die sind nicht aktuell, aber die funktionieren!

Hier musst Du halt den User heraus bekommen, der bei der Datenbank eingerichtet ist um darauf zuzugreifen.
  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 1. Apr 2014, 11:49
Leider geht das nicht. Man soll auf die New Classic Line nur mit den mitgelieferten ODBC Treibern von extern zugreifen. Dann ist aber gewährleistet, dass die Tabellen konsistent bleiben, weil SAGE dann eben alle Einträge in den Tabellen entsprechend aktualisiert. Ein direkten Zugreifen auf die MySQL Datenbank wird nicht unterstützt.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
arnof

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

AW: [ADO] MaxRecords bzw. CacheSize

  Alt 1. Apr 2014, 12:16
Leider geht das nicht. Man soll auf die New Classic Line nur mit den mitgelieferten ODBC Treibern von extern zugreifen. Dann ist aber gewährleistet, dass die Tabellen konsistent bleiben, weil SAGE dann eben alle Einträge in den Tabellen entsprechend aktualisiert. Ein direkten Zugreifen auf die MySQL Datenbank wird nicht unterstützt.
Ah, das ist mir zwar schleierhaft, wie das mit dem Treiber zusammenhängen soll. Ist wohl ehr ein Beitrag aus der Märchenstunde. Entweder das überwacht die Datenbank (entsprechendes Design) oder die Applikation. Aber bestimmt nicht der ODBC Treiber
  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 1. Apr 2014, 13:34
Mein Beitrag sollte nicht als Aprilscherz verstanden werden. Ich habe noch nie einen ODBC Treiber geschrieben, aber mein Verständnis ist, dass der Treiber in Richtung Applikation eine standartisierte Schnittstelle zur Verfügung stellt. Es ist aber nicht so, dass z.B. die SQL Statements als pass through einfach an die Datenbank im Hintergrund weitergegeben wird. So könnte es durchaus sein, dass ein Insert oder Update Statement an eine StoredProcedure weitergeleitet wird, die dann etwas "mehr" macht als nur das Hinzufügen oder Aktualisieren der einen Tabelle. Von daher spielen dann ggf. der ODBC Treiber und die Datenbank zusammen, um die Konsistenz zu erhalten. Ein direkter MySQL Zugriff auf die Tabellen im Hintergrund mit beliebigen SQL Statements könnte deshalb ein Problem sein. So wird es auch in der SAGE KHK Dokumentation erläutert.

Und gerade diese Umsetzung scheint jetzt hier zum Problem werden. So wird wohl die CacheSize nicht wirklich abgebildet. Selbst ein SQL Statement mit z.B. LIMIT 100 wird offensichtlich nicht einfach durchgeleitet sondern vom Treiber modifiziert.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

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

AW: [ADO] MaxRecords bzw. CacheSize

  Alt 2. Apr 2014, 07:49
Leider führt mein Testprogramm, bei dem ich unter anderem die Daten nur noch blockweise lese auf dem Zielnetztwerk beim Kunden immer noch zu dem "Out of Memory" Fehler.

Hat jemand noch eine andere Idee, was zu dem Fehler führen kann, und wie man diesen vermeiden kann?

Hat jemand Zugriff auf eine aktuelle SAGE KHK New Classic Line 2014 im Netz, dem ich dann mal ein kleines Testprogramm zuschicken könnte, welches nur zwei Tabellen über die Kette ADO -> ODBC -> KHK MySQL anzeigt? Ich würde gerne sehen, ob der Fehler auch in anderen Netztwerken auftritt.
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
arnof

Registriert seit: 25. Apr 2013
1.261 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#6

AW: [ADO] MaxRecords bzw. CacheSize

  Alt 2. Apr 2014, 08:43
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)
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

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

AW: [ADO] MaxRecords bzw. CacheSize

  Alt 2. Apr 2014, 09:21
Es sind 5400 Datensätze (KundenTabelle). Ich habe dann ein ADODataSet genommen und wie oben beschrieben nur Blöcke eingelesen. Der erste Block sollte weniger als 500 Datensätze umfassen. Dann öffne ich das DS und lasse es in einem DBGrid anzeigen. Die Daten erscheinen und dann kommt die "Out of Memory" Fehlermeldung. (Bei weniger als 500 Kundendatensätze !?)
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

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

AW: [ADO] MaxRecords bzw. CacheSize

  Alt 2. Apr 2014, 17:12
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
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#9

AW: [ADO] MaxRecords bzw. CacheSize

  Alt 3. Apr 2014, 23:06
Leider geht das nicht. Man soll auf die New Classic Line nur mit den mitgelieferten ODBC Treibern von extern zugreifen. Dann ist aber gewährleistet, dass die Tabellen konsistent bleiben, weil SAGE dann eben alle Einträge in den Tabellen entsprechend aktualisiert. Ein direkten Zugreifen auf die MySQL Datenbank wird nicht unterstützt.
Ah, das ist mir zwar schleierhaft, wie das mit dem Treiber zusammenhängen soll. Ist wohl ehr ein Beitrag aus der Märchenstunde. Entweder das überwacht die Datenbank (entsprechendes Design) oder die Applikation. Aber bestimmt nicht der ODBC Treiber
Nein der ODBC-Treiber überwacht das nicht, aber das womit dieser ODBC-Treiber spricht ... und ich vermute mal, der wird eben nicht direkt mit dem MySQL-Server sprechen
Code:
CL-ODBC-Treiber <-> CL-Server <-> MySQL-Server <-> CL-Datenbank
statt
Code:
MySQL-ODBC-Treiber <-> MySQL-Server <-> CL-Datenbank
Insofern wird der ConnectionString auch sehr unspannend sein, da dieser nur Einstellungen für den CL-ODBC-Treiber beinhalten kann und die haben nun mal nix mit dem MySQL-ODBC-Treiber zu schaffen.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  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 16:31 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