Hank the knife: MySQL / PHP : Wie 100.000 Datensätze ohne timeout kopieren?

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

  1. 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

    --
    Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.
    1. 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

      1. 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

        --
        Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.
        1. 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

          --
          Nur selber lernen macht schlau
          http://bergpost.annerschbarrich.de
          1. 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

            --
            Dieser Post hier grad eben brauchte 8 Hops.
            1. 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

              --
              Nur selber lernen macht schlau
              http://bergpost.annerschbarrich.de
      2. 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

        --
        Nur selber lernen macht schlau
        http://bergpost.annerschbarrich.de
    2. 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

      --
      Nur selber lernen macht schlau
      http://bergpost.annerschbarrich.de
  2. 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.