Multi: Mysql, auto_increment und das Ende der Spalte

Mahlzeit,

wie kann ich verhindern, dass ein INT irgendwann überläuft, wenn es durch auto_increment befüllt wird?

Szenario: Ein Shell-Script füllt eine Tabelle und den auto_increment-Wert nutze ich zur Sortierung. Da es mehrere Aktionen pro Sekundegibt, reicht ein NOW() für die Sortierung leider nicht aus.

Es werden immer nur ca. 20 Zeilen eingefügt, evtl. verändert, ausgelesen und anschliessend wird die Tabelle wieder gelehrt.

Macht es jetzt sinn, denn auto_increment nach jeder Leerung zurückzusetzen oder sollte ich ein bigint für den auto_increment  nehmen und auf Dauer grosse Werte in Kauf nehmen?

Was ist die übliche Vorgehensweise?

  1. Hi,

    Es werden immer nur ca. 20 Zeilen eingefügt, evtl. verändert, ausgelesen und anschliessend wird die Tabelle wieder gelehrt.

    Macht es jetzt sinn, denn auto_increment nach jeder Leerung zurückzusetzen oder sollte ich ein bigint für den auto_increment  nehmen und auf Dauer grosse Werte in Kauf nehmen?

    Wenn du eh nie vorhast, Datensätze außerhalb dieser abgeschlossenen Bearbeitung über die ID zu identifizieren - dann kannst du m.E. die Tabelle nach Abschluss auch jeweils wieder in jungfräulichen Zustand zurück versetzen.

    Da kannst du also gleich ein TRUNCATE TABLE abfeuern, wenn du mit deiner Be-/Verarbeitung eines Schwungs an Daten fertig bist. Das macht Löschen der Datensätze und Zurücksetzen des auto_incement-Counters gleich in einem Rutsch.

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. Da kannst du also gleich ein TRUNCATE TABLE abfeuern, wenn du mit deiner Be-/Verarbeitung eines Schwungs an Daten fertig bist. Das macht Löschen der Datensätze und Zurücksetzen des auto_incement-Counters gleich in einem Rutsch.

      Danke, das ist bisher auch meine Lösung der Wahl.

  2. Hi,

    Es werden immer nur ca. 20 Zeilen eingefügt, evtl. verändert, ausgelesen und anschliessend wird die Tabelle wieder gelehrt.

    Was wird der Tabelle denn gelehrt? Das 1x1? Das große Latinum?

    Oder wird sie geleert?

    Macht es jetzt sinn,

    nein, auf keinen Fall. It might make sense, aber in der deutschen Sprache ist "Sinn machen" nicht richtig (auch wenn's immer öfter zu hören ist).

    denn auto_increment nach jeder Leerung zurückzusetzen oder sollte ich ein bigint für den auto_increment  nehmen und auf Dauer grosse Werte in Kauf nehmen?

    Ist es für dieses Szenario, daß die Tabelle gefüllt und praktisch sofort wieder geleert wird, überhaupt sinnvoll, das ganze in einer Datenbank stattfinden zu lassen?
    Reicht da nicht eine Datenstruktur im Script?

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    O o ostern ...
    Fachfragen per Mail sind frech, werden ignoriert. Das Forum existiert.
    1. Was wird der Tabelle denn gelehrt? Das 1x1? Das große Latinum?

      Tja, manchmal mache sogar ich Fehler ;)

      Reicht da nicht eine Datenstruktur im Script?

      Nein, da das Script mehrfach laufen kann, während der Datenverarbeitung. Ein Script füttert die Datenbank ein anderes (aktuell PHP, später Perl/TK) liest die Daten aus.
      Das Bash-Script, das die Daten in die Datenbank schreibt wird aber von einem anderen Programm getriggert und mit den Daten gefüttert. Da dieses Programm durch einen Menschen bedient wird, ist es nicht vorauszusehen, wie lange die Dateneingabe dauert, wie lang die Liste der Daten ist und wann die Liste gelöscht wird.

      Die einzige Alternative zu einer Datenbank wäre eine Datei. Da die Datenbank aber schon vorhanden ist und ich lediglich ne zusätzliche Tabelle brauche, ist ne Datenbank die einfachste Lösung.