AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken MSSQL/ADO + 3 Mio Datensätze , Thread Error
Thema durchsuchen
Ansicht
Themen-Optionen

MSSQL/ADO + 3 Mio Datensätze , Thread Error

Ein Thema von bernhard_LA · begonnen am 11. Jun 2014 · letzter Beitrag vom 13. Jun 2014
Antwort Antwort
Seite 1 von 2  1 2      
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.149 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: MSSQL/ADO + 3 Mio Datensätze , Thread Error

  Alt 12. Jun 2014, 12:12
Zitat:

Und solange deine erstellte Exe nicht 64-Bittig ist bringt dir das ehe nix.
unsere *.exe ist x64 !


Unsere Analyse zeigt : Das Programm kippt bereits beim Versuch eine TADOTable zu aktivieren (MyAdoTable.active := true ) , bis zur Anzeige der Daten im Grid kommen wir erst gar nicht.
Damit bin ich auch nicht in der Lage in einer Query einen Befehl "select * from MyTable" abzuschicken, damit ist ein Lösungsweg absolut nicht klar
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.880 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: MSSQL/ADO + 3 Mio Datensätze , Thread Error

  Alt 12. Jun 2014, 12:35
Du sollst auch auf die Table verzichten und per Query, die Daten holen, welche Du benötigst! Und nur die!!! Das für Deinen Anwendungsfall falsche Verhalten selber nachzubilden ist ja auch nicht besser!
Markus Kinzler
  Mit Zitat antworten Zitat
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.149 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: MSSQL/ADO + 3 Mio Datensätze , Thread Error

  Alt 12. Jun 2014, 13:05
Zitat:
Du sollst auch auf die Table verzichten und per Query, die Daten holen, welche Du benötigst! Und nur die!!! Das für Deinen Anwendungsfall falsche Verhalten selber nachzubilden ist ja auch nicht besser!
Eurer Idee habe ich schon verstanden , nur führt die leider nicht zum Ziel.



Meine Anwendung ist ganz gut vergleichbar mit einem CAD Programm, wenn der Anwender auf den "Male Gegenstand auf Bildschirm, z.b. einen Pkw "
Button drückt dann läuft intern "select * from Tabelle"; soll ich beim Zeichnen des Autos die Reifen dann weglassen ????
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: MSSQL/ADO + 3 Mio Datensätze , Thread Error

  Alt 12. Jun 2014, 13:23
Meine Anwendung ist ganz gut vergleichbar mit einem CAD Programm, wenn der Anwender auf den "Male Gegenstand auf Bildschirm, z.b. einen Pkw "
Button drückt dann läuft intern "select * from Tabelle"; soll ich beim Zeichnen des Autos die Reifen dann weglassen ????
Nein sollst Du nicht, aber wenn Du nur die Reifen ändern willst, dann interessiert sich niemand für die Kabelbäume.
Du solltest ggf. mal etwas weiter ausholen was Du erreichen willst, und welche Daten Du hast. Solange Du darauf bestehst 3Mio Datensätze einzulesen, woher kommen die überhaupt?, drehen wir uns nur im Kreis.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Mikkey

Registriert seit: 5. Aug 2013
265 Beiträge
 
#5

AW: MSSQL/ADO + 3 Mio Datensätze , Thread Error

  Alt 12. Jun 2014, 13:35
Meine Anwendung ist ganz gut vergleichbar mit einem CAD Programm, wenn der Anwender auf den "Male Gegenstand auf Bildschirm, z.b. einen Pkw "
Button drückt dann läuft intern "select * from Tabelle"; soll ich beim Zeichnen des Autos die Reifen dann weglassen ????
Nein, aber das Motorrad...

Warum lässt Du in "intern" nicht 'Select * from Tabelle Where <gehört zum Gegenstand>" ablaufen. Es ist kaum vorstellbar, dass wirklich 3 Millionen Bestandteile zu einer Zeichnung gehören.
  Mit Zitat antworten Zitat
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.149 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: MSSQL/ADO + 3 Mio Datensätze , Thread Error

  Alt 12. Jun 2014, 13:52
sorry Jungs : das Hinterfragen ob ich wirklich 3 Mio Datensätze brauche ist sinnlos, es sind heute in unserem Problem-Projekt 3 Mio records - können aber auch mal deutlich mehr werden;



Delphi-Quellcode:
   // von ~ 10 Records bis zu 10 Mio .... alles ist technisch möglich
   ///
   aquery.sql.add ('select* from database where material = 'Alu'');


   aquery.open;

   LoopIndex := aquery.recordCount
  for i:= 0 to LoopIndex do
      begin

         ReadSinglerecordFromTable;

         CopySingleRecordIntoObjectList;
      
         aquery.next; // ist natürlich auch enthalten :-)
     end;

   // die ObjectList darf nur durch den verfügbaren Hauptspeicher am Computer begrenzt sein
   // ich brauche alle Daten in der Liste !!!!!!!
   
   MachwasMitderObjectList;

   
   SchreibeObjectListInTabelleZurück,

Geändert von bernhard_LA (12. Jun 2014 um 14:39 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.880 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: MSSQL/ADO + 3 Mio Datensätze , Thread Error

  Alt 12. Jun 2014, 13:58
Das ist nicht dein Ernst, Du liest 3+ Mio Datensätze ein, nur zu ermitteln wieviel es sind?



Delphi-Quellcode:
aQuery.Sql.Text := 'select count(*) from database where material = :material;';
aQuery.Paramters.Params[0].asString := 'Alu';
aQuery.Open;
LoopIndex := aquery.Fields[0].asInteger;
sollte das Selbe machen nur halt schenller und mit minimalen Speicherverbrauch!!!
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.535 Beiträge
 
Delphi 12 Athens
 
#8

AW: MSSQL/ADO + 3 Mio Datensätze , Thread Error

  Alt 12. Jun 2014, 14:15
Delphi-Quellcode:
   //LoopIndex := aquery.recordCount
  //for i:= 0 to LoopIndex do
  while not aquery.EOF do
      begin

         ReadSinglerecordFromTable;

         CopySingleRecordIntoObjectList;

         aquery.Next;

     end;
Für das Query ist das kein Problem, denn dem kann man ja sagen, daß es die Daten noch im Datenbankserver belassen soll und nur nach und nach die "benötigten" Records nachladen soll.
Aber mit deiner Liste kannst du dennoch an die Grenzen des lokalen Arbeitsspeichers stoßen.

Und nee, im Grunde braucht man die Liste nicht, wenn man die RecNo's der Datensätze nimmt und dann auf das Query zugreift.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (12. Jun 2014 um 14:34 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.880 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: MSSQL/ADO + 3 Mio Datensätze , Thread Error

  Alt 12. Jun 2014, 14:23
Wobei ja auc h interessant wäre, was ReadSinglerecordFromTable() genau macht
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.232 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: MSSQL/ADO + 3 Mio Datensätze , Thread Error

  Alt 12. Jun 2014, 16:48
sorry Jungs : das Hinterfragen ob ich wirklich 3 Mio Datensätze brauche ist sinnlos, es sind heute in unserem Problem-Projekt 3 Mio records - können aber auch mal deutlich mehr werden;
Das ist nicht Sinnlos. Das ist genau das was du dir fragen sollst.
Wenn du dir dies wichtige Frage nicht stellst, stellst sich mir die Frage ob du die geeignete Person bist dieses Problem zu lösen.
Evtl. sollte sich jemand mit dem Problem beschäftigen der sich mit dem eigentlichen Problem beschäftigt ob 3 Mio-Datensätze dem User gleichzeitig darstellen willst.

Solltest du wirklich 3 Mio. Daten "benötigen" z.B. um irgendwas zu exportieren, zu Analysieren so gibt es die Möglichkeit z.B. mit einem Forward-Only-Curser zu arbeiten oder "Wiederaufsetzende" Queries zu implementieren (Sortierte Abfrage und Blockweises abfragen und dann mit nächsten Block weiter machen).
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 11:38 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