Große MySQL Datenbank Konfiguration anpassen?

  • SQL

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von ErfinderDesRades.

    Große MySQL Datenbank Konfiguration anpassen?

    Hallo in die Runde,

    ich habe ein Problem mit einer großen Datenbank. Die DB hat derzeitig insgesamt ca. 580 Mio. Einträge.
    Teilweise werden die Tabellen im Cache gehalten.

    Vor kurzem wurde eine Prüfung gemacht ob die Daten alle in Ordnung sind. Dabei wurde festgestellt, dass es ein paar (ca. 10000) doppelte Einträge gab.
    Ich bin mir gerade nicht sicher wie sowas zustande kommen kann.

    Kurzer Background zu de DB:

    als Speicher-Engine nutze ich InnoDB

    Die MySQL Server ist im Grunde unkonfiguriert. Das einzige was ich explizit eingestellt habe ist die Anzahl der Verbindungen (sehr viele viele).

    die Haupttabelle ist in etwa so aufgebaut:

    ID | genauer Name des Datensatzes (Eindeutig) | Einlesedatum | weitere Daten...

    Bevor ich einen neuen Datensatz einlese, frage ich die Tabelle ab ob der Datensatzname bereits bekannt ist. -- Wenn ja --> dann mach nichts ansonsten schreibe den Datensatz
    Eigentlich ist die Abfrage eindeutig.

    Mir ist aufgefallen, dass die doppelten Einträge fortlaufende IDs hatten. Das heißt wohl für mich, dass die Abfrage die durchgeführt wurde kein Ergebnis geliefert hat und deswegen der Datensatz hinzugefügt wurde.

    Die Frage ist jetzt für mich ob die DB mit dem Cache nicht zurecht kommt oder ob es vielleicht noch andere Probleme gibt.

    Hat schon jemand von euch auch sowas gehabt? Woran hat es gelegten? Hat einer einen Ansatz wie ich das Problem eingrenzen kann?

    Viele Grüße

    Artur

    Verschoben. ~Thunderbolt

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()

    Artur schrieb:

    Vor kurzem wurde eine Prüfung gemacht ob die Daten alle in Ordnung sind. Dabei wurde festgestellt, dass es ein paar (ca. 10000) doppelte Einträge gab.
    Ich bin mir gerade nicht sicher wie sowas zustande kommen kann.
    Du hast es selbst gesagt:

    Artur schrieb:

    Die MySQL Server ist im Grunde unkonfiguriert.
    Wenn man keine Dubletten möchte in einer Multi-User-Datenbank, dann muss man sie entsprechend konfigurieren.


    Artur schrieb:

    Bevor ich einen neuen Datensatz einlese, frage ich die Tabelle ab ob der Datensatzname bereits bekannt ist. -- Wenn ja --> dann mach nichts ansonsten schreibe den Datensatz
    Eigentlich ist die Abfrage eindeutig.
    Das ist unzureichend, und bei einer Multi-User-Datenbank ist das völlig unzureichend