Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: Größeres Problem mit Tabelle

  1. #1
    Registriert seit
    06.10.2006
    Beiträge
    44

    Standard Größeres Problem mit Tabelle

    Hallo,
    in einer DB die seit einigen Jahren stabil läuft tritt plötzlich folgendes Problem auf:

    in einer Tabelle werden mehrere hundert Millionen Datensätze erzeugt. Damit geht natürlich die ganze Performace in den Allerwertesten.
    in die Tabelle wird nur per Trigger geschrieben, niemals direkt durch die Anwendung.
    Ich bin nun dabei, die Ursache zu suchen, aber bsilang noch wenig erfolgreich, was sicher auch daran liegt, dass relativ wenig logging in der Produktivdatenbank eingestellt ist.
    Das erste auffällige was ich finden konnte ist folgende Log-Meldung (die sich ewig wiederholt):

    2011-12-05 18:56:35 CET LOG: Checkpoints passieren zu oft (alle 23 Sekunden)
    2011-12-05 18:56:35 CET TIPP: Erh?hen Sie eventuell den Konfigurationsparameter >>checkpoint_segments<<.
    2011-12-05 18:56:58 CET LOG: Checkpoints passieren zu oft (alle 23 Sekunden)
    2011-12-05 18:56:58 CET TIPP: Erh?hen Sie eventuell den Konfigurationsparameter >>checkpoint_segments<<.
    2011-12-05 18:57:22 CET LOG: Checkpoints passieren zu oft (alle 24 Sekunden)
    .......
    Meine Fagen nun: Hatte jemand von euch ein ähnliches Phänomen?
    Hat jemand Tipps, wie ich das Problem lokalisieren kann ?

    Rolf

  2. #2
    castorp ist offline Erfahrener Benutzer
    Registriert seit
    27.06.2009
    Beiträge
    524

    Standard

    Hast Du den Rat von PostgreSQL befolgt und checkpoint_segments erhöht?
    A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

  3. #3
    Registriert seit
    06.10.2006
    Beiträge
    44

    Standard

    Zitat Zitat von castorp Beitrag anzeigen
    Hast Du den Rat von PostgreSQL befolgt und checkpoint_segments erhöht?
    Nein, das ist ja nur die Folge davon, dass da plötzlich Millionen von Records erzeugt werden. Im normale Betrieb ist das kein Problem.

  4. #4
    castorp ist offline Erfahrener Benutzer
    Registriert seit
    27.06.2009
    Beiträge
    524

    Standard

    Zitat Zitat von rolf.schaufelberger Beitrag anzeigen
    Nein, das ist ja nur die Folge davon, dass da plötzlich Millionen von Records erzeugt werden. Im normale Betrieb ist das kein Problem.
    Dann verstehe ich Deine Frage nicht
    A SQL query walks into a bar and sees two tables. He walks up to them and says 'Can I join you?'

  5. #5
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.055

    Standard

    Wenn die Tabelle nur per Trigger befüllt wird:
    - Was löst die Trigger aus?
    - Sicher das die Einträge wirklich aus einem Trigger kommen und nicht doch irgendetwas direkt schreibt?
    - Gibt es ev. Rekursionen in der/den Triggerfunktionen?
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  6. #6
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.465

    Standard

    Zitat Zitat von castorp Beitrag anzeigen
    Dann verstehe ich Deine Frage nicht
    Stell Dich nicht so an, mann ;-)

    Du sollst, ohne die Triggerfunktion zu kennen, sagen, ob diese korrekt arbeitet. Also, jetzt bist Du wieder dran ...


    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  7. #7
    Registriert seit
    06.10.2006
    Beiträge
    44

    Standard

    Hallo Andreas,

    Zitat Zitat von ads Beitrag anzeigen
    Wenn die Tabelle nur per Trigger befüllt wird:
    - Was löst die Trigger aus?
    Ein anderer Trigger. Der Ablauf ist:
    Update Trigger in Tabelle A macht insert in B
    Insert Trigger in B macht inserts in C
    Die abermillionen Einträge sind dann in C

    - Sicher das die Einträge wirklich aus einem Trigger kommen und nicht doch irgendetwas direkt schreibt?

    irgendetwas ist gut. Von der Anwendung her macht nur der Trigger inserts in C.

    - Gibt es ev. Rekursionen in der/den Triggerfunktionen?
    Nein, und wie bereits erwähnt, das ganze läuft seit 5 Jahren ohne Probleme.

    Mein Problem ist, ich habe keinerlei Idee, was da passiert! Meine Frage ist, wie kann ich durch geeignetes Logging, dem ganzen auf die Spur kommen?
    Problem dabei: ich kann die Datensätze, die da angelegt wurde nicht sehen, schlicht weil kein select mehr möglich ist, da das ganze System in dem Zustand zum einen durch Locks blockiert ist zum anderen die Datenbank soo gross wird, dass allein ein Truncate auf die tabelle eine viertelstunde läuft und ich eh schon alle Hände voll zu tun hab , das wieder online zu bekommen.

    Gruß Rolf

  8. #8
    Registriert seit
    06.10.2006
    Beiträge
    44

    Standard

    Zitat Zitat von akretschmer Beitrag anzeigen
    Stell Dich nicht so an, mann ;-)

    Du sollst, ohne die Triggerfunktion zu kennen, sagen, ob diese korrekt arbeitet. Also, jetzt bist Du wieder dran ...




    Andreas
    Nein, das habe ich nicht gefragt. Ich gehe davon aus, dass der Trigger korrekt abreitet, weil er das seit Jahren tut.
    Ich habe gefragt, ob schon mal jemand so ein Phänomen hatte, dass Millionen von Records erzeugt wurden und wie man der Ursache am besten auf die schliche kommen kann.
    Rolf

  9. #9
    ads
    ads ist offline Super-Moderator
    Registriert seit
    08.02.2006
    Ort
    MD
    Beiträge
    4.055

    Standard

    Ich würde schlicht mal auf Rekursion in der Triggerfunktion tippen.

    Fahr die Datenbank herunter, wirf alle User raus, sperr den Zugang für alle und dann schau dir das in Ruhe an.
    Xandrian: Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören

    Jetzt NEU: PostgreSQL - Datenbankpraxis für Anwender, Administratoren und Entwickler

    PostgreSQL Service & Support

  10. #10
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.465

    Standard

    Zitat Zitat von rolf.schaufelberger Beitrag anzeigen
    Nein, das habe ich nicht gefragt. Ich gehe davon aus, dass der Trigger korrekt abreitet, weil er das seit Jahren tut.
    Ich habe gefragt, ob schon mal jemand so ein Phänomen hatte, dass Millionen von Records erzeugt wurden und wie man der Ursache am besten auf die schliche kommen kann.
    Rolf
    Nun, vielleicht ist ja doch ein Fehler in der Triggerfunktion, der nun erstmals seit Jahren getriggert wurde (was für ein Wortspiel ...), also, wenn da Millionen von Records kommen klingt das schon mal stark nach Rekusion, wie auch ads schon feststellte.


    Andreas
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 31.05.2011, 16:27
  2. Antworten: 4
    Letzter Beitrag: 24.10.2010, 07:52
  3. Tabelle mit Tabelle aus anderer DB überschreiben
    Von blablub im Forum Allgemeines
    Antworten: 4
    Letzter Beitrag: 02.05.2010, 07:05
  4. Problem beim Sortieren einer Tabelle
    Von terrible11 im Forum SQL
    Antworten: 5
    Letzter Beitrag: 30.01.2008, 08:57
  5. Antworten: 2
    Letzter Beitrag: 19.09.2007, 16:57

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Links: Tobias Bauer - IT- und Funkdienstleistungen   -   Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen   -   Funkforum