MySQL / PHP : Wie 100.000 Datensätze ohne timeout kopieren?
Hank the knife
- datenbank
0 hotti0 Vinzenz Mai
Hi,
wie kann ich von db1 in db2 (Tabellenname+Spalten identisch) auf einem "Billigserver" mit Scripttimeout=30 Sekunden ca. 100.000 Datensätze kopieren?
Grüße, Hank
Hi,
wie kann ich von db1 in db2 (Tabellenname+Spalten identisch) auf einem "Billigserver" mit Scripttimeout=30 Sekunden ca. 100.000 Datensätze kopieren?
Soso, Du hast ein vorgegebenes Timeout. Rechne ersteinmal aus, ob der größte Record in Bits/Byte bei vorgegebener Bandbreite überhaupt in die 30 Sekunden reinpasst. Respektive 30% Sicherheit.
Hotte
Hi,
»»
»» wie kann ich von db1 in db2 (Tabellenname+Spalten identisch) auf einem "Billigserver" mit Scripttimeout=30 Sekunden ca. 100.000 Datensätze kopieren?Soso, Du hast ein vorgegebenes Timeout. Rechne ersteinmal aus, ob der größte Record in Bits/Byte bei vorgegebener Bandbreite überhaupt in die 30 Sekunden reinpasst. Respektive 30% Sicherheit.
Hotte
Ich brauch nix rechnen, ich weiß einfach, dass maximal 1000 Einträge der Tabelle durchgehen, danach kommt der Timeout.
Hab ich ausgerechnet, Hotte
Hank
hi,
Ich brauch nix rechnen, ich weiß einfach, dass maximal 1000 Einträge der Tabelle durchgehen, danach kommt der Timeout.
Hab ich ausgerechnet, Hotte
Klar, so kompliziert ist das alles gar nicht. Wenn Du 1000 Einträge pro Scriptaufruf durchkriegst, dann musst Du das Script 100mal aufrufen um alle 100000 Rekords ohne Timeout durchzukriegen. So würde ich das machen.
Bei meinem DB-Management gehe ich sogar noch einen Schritt weiter und rufe für jedes SQL-Statement ein Script auf dem Server auf. Das funktioniert sehr zuverlässig und Timoutprobleme sind damit so gut wie ausgeschlossen.
Viele Grüße,
Hotte
Hello,
Klar, so kompliziert ist das alles gar nicht. Wenn Du 1000 Einträge pro Scriptaufruf durchkriegst, dann musst Du das Script 100mal aufrufen um alle 100000 Rekords ohne Timeout durchzukriegen. So würde ich das machen.
Und woher weißt Du dann, wieviele Sätze Du tatsächlich "durchbekommen" hast?
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hello,
»» Klar, so kompliziert ist das alles gar nicht. Wenn Du 1000 Einträge pro Scriptaufruf durchkriegst, dann musst Du das Script 100mal aufrufen um alle 100000 Rekords ohne Timeout durchzukriegen. So würde ich das machen.
Und woher weißt Du dann, wieviele Sätze Du tatsächlich "durchbekommen" hast?
Dafür gibts Protokolle. Und btw., Sockets sind transparent, d.h., es ist völlig egal, ob Daten von einem PC zum anderen laufen und wieviele Hops dazwischen sind (oder keine).
Viele Grüße,
schönen Sonntag,
Horst Haselhuhn
Hello,
Und woher weißt Du dann, wieviele Sätze Du tatsächlich "durchbekommen" hast?
Dafür gibts Protokolle. Und btw., Sockets sind transparent, d.h., es ist völlig egal, ob Daten von einem PC zum anderen laufen und wieviele Hops dazwischen sind (oder keine).
In welchem soll Hank the knife denn nachgucken?
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hello,
Ich brauch nix rechnen, ich weiß einfach, dass maximal 1000 Einträge der Tabelle durchgehen, danach kommt der Timeout.
Das kann man überhaupt nicht bewerten, solange man Deine Vorgehensweise und den Code dazu nicht kennt.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hello,
Soso, Du hast ein vorgegebenes Timeout. Rechne ersteinmal aus, ob der größte Record in Bits/Byte bei vorgegebener Bandbreite überhaupt in die 30 Sekunden reinpasst. Respektive 30% Sicherheit.
Die Datensätze werden doch wohl das Rechenzentrum und vielleicht sogar den Host gar nicht verlassen, wenn beide Datenbanken und der Webserver auf demselben liegen.
Das ist dann ein klassischer RPC.
Liebe Grüße aus dem schönen Oberharz
Tom vom Berg
Hallo,
wie kann ich von db1 in db2 (Tabellenname+Spalten identisch) auf einem "Billigserver" mit Scripttimeout=30 Sekunden ca. 100.000 Datensätze kopieren?
wenn die gleichen Zugangsdaten für beide Datenbanken gelten, sollte es ein einfaches
[link:http://dev.mysql.com/doc/refman/5.1/en/insert.html@title=INSERT] INTO db2.tabelle SELECT * FROM db1.tabelle
tun [1]. Soweit ich weiß, zählen MySQL-Zeiten nicht für die PHP-Skriptausführung.
Freundliche Grüße
Vinzenz
[1] Du kannst auch gern die Spalten einzeln ausführen, meine MySQL-Version hat's geschluckt und korrekt ausgeführt.