![]() |
Datenbank: MySQL • Version: 5.1 • Zugriff über: ODBC / ADO
MySQL, 8.000.000 DatenS., Tabelle öffnen => der odbc-trei
Hallo zusammen,
wie öffne ich Tabellen, die sehr groß sind? Ich verwende TADOs und MySQL 5.1 ODBC. Mein Programm frag täglich ein Laufwerk ab und wertet die dort abgespeicherten Dateien aus. Es funktioniert so lange die Tabelle klein ist. Jetzt, wo ich ca. 8.000.000 Datensätze in einer Tabelle eingespielt habe, so steigt mein Programm bei öffnen der Connection aus:
Delphi-Quellcode:
Früher hatte ich alle Tabellen (verwende insgesamt 8 Tabellen) beim Programmstart geöffnet, da stieg mein Programm bei ca. 6.000.000 Datensetzen verteilt auf die 8 Tabellen. Also dachte ich mir, dass ich zur bestimmten Zeit nur eine Tabelle geöffnet haben darf/kann. Das tue ich jetzt, aber ab 8.000.000 funktioniert es auch nicht mehr.ADOTable1.Open; DateienverarbeitenClick(sender); saveMemo(Memo_Verzeichnis); ADOTable1.Close; Ich habe 2GB RAM und eine Auslagerungdatei von 8192MB. Bei Öffnent der Tabelle steigt die RAM-Nutzung auf 1.4GB, es verbleibt noch ausgelagerter RAM frei, "Physikalischer Speicher (KB) => verfügbar" geht gegen 0, es wird ausgelagert und dann kommt der Abbruch: "der odbc-treiber unterstützt die angeforderten eigenschaften nicht" Ich habe bereits den CursorLocation auf clUseServer umgestellt. Das hatte ein wenig gebracht. Ich konnte von ca. 6.000.000 auf 8.000.000 die "Öffnungsgreze" hochsetzen. Was kann ich den jetzt tun? Es gibt doch Möglichkeit bei MySQL nicht über einen ODBC-Treiber zu gehen? Irgendwie native Treiber, oder? Danke Kef |
Re: MySQL, 8.000.000 DatenS., Tabelle öffnen => der odbc-
Zitat:
Zitat:
|
Re: MySQL, 8.000.000 DatenS., Tabelle öffnen => der odbc-
Hallo,
also mit dem Cursor müsste es doch was gebracht haben, denn vorher konnte ich bis 6.000.000 quer über alle Tabelle (Tabelle 1 hatte damals ca. 2.000.000 Einträge) lesen, nachher bis ca. 8.000.000. Zitat:
a) ich holle Dateien vom Laufwerk ab b) schaue nach bestimmten Keywords c) speichere die Keywords in der MySQL-DB d) mit dem Query-Browser mache anschließend Abfragen Mein Problem ist Punkt c). Um die Keywords abzuspeichern mache ich eine Connection.Open und hier kommmt es zu dem Fehler. Wie kann ich die Progammlogik anpassen? Auch wenn ich nichts aus Deiten lesen würde, nur einfach die Tabelle über Connect öffnen würde, auch dann bekäme ich den Fehler. Grüße Kef |
Re: MySQL, 8.000.000 DatenS., Tabelle öffnen => der odbc-
Wozu machst du eine Open beim einfügen ???
Da reicht doch execute oder ? |
Re: MySQL, 8.000.000 DatenS., Tabelle öffnen => der odbc-
Um neue Daten einzufügen, brauchst du doch die bestehenden Daten nicht abzurufen!
Delphi-Quellcode:
Man kann Datensätze auch mit INSERT einfügen; das ist noch ein bisschen schneller als obige Lösung.
Query1.SQL.Text := 'SELECT * FROM Tabelle WHERE 0=1'; // WHERE 0=1 verhindert, dass bestehende Daten abgerufen weerden
Query1.Open; // ... Schleife über alle einzufügenden Daten Query1.Append; Query1['Feld1'] := ... Query1['Feld2'] := ... Query1.Post; Allerdings ist obige Lösung für den Programmierer bequemer. |
Re: MySQL, 8.000.000 DatenS., Tabelle öffnen => der odbc-
Hi,
ich verwende TADOConnection und TADOTable. Bei TADOTable habe ich kein Execute, nur Open. Was jetzt? |
Re: MySQL, 8.000.000 DatenS., Tabelle öffnen => der odbc-
Zitat:
Statt direkt das Property TableName zu setzen, setzt du jetzt das Property SQL auf den Inhalt:
SQL-Code:
Das Wort "Tabelle" ersetzt du durch den aktuellen Tabellennamen; is klar.
SELECT * FROM Tabelle WHERE 0=1
Alles andere bleibt wie es ist. |
Re: MySQL, 8.000.000 DatenS., Tabelle öffnen => der odbc-
Fauler Programmierer :wink:
Nimm Insert und eine Query und alles wird gut und wenn doch nicht nimm was vernünftiges zum Connecten auf die MySQL DB |
Re: MySQL, 8.000.000 DatenS., Tabelle öffnen => der odbc-
und es geht! Danke!
mfg KEf |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:12 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