Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 16 von 16

Thema: Rollback verlangsamt scheinbar nachfolgende Operationen auf der Tabelle

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

    Standard

    Zitat Zitat von tigger Beitrag anzeigen
    Also irgendwie macht mir diese Tabelle mit den 18 Mio Werten einwenig zu schaffen.

    Ich habe in dieser Tabelle einen kombinierten Primary Key mit 2 Spalten.
    Wenn ich nun exakt nach diesem Selektiere, so wird mir diese Zeile sofort angezeigt. Wenn ich diese aber lösche, dann dauert das in etwas 53 Sek.

    Ist das normal bei der Datenmenge in der Tabelle?

    (VACUUM FULL vorher ausgeführt )
    Nein. Was sagt ein EXPLAIN ANALYSE?

    Andreas
    Geändert von akretschmer (06.05.2008 um 16:04 Uhr) Grund: typo
    --
    ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)
    https://www.xing.com/profile/Andreas_Kretschmer7

  2. #12
    tigger ist offline Benutzer
    Registriert seit
    02.05.2008
    Beiträge
    41

    Standard

    Ich hab gerade das Forum durchwühlt, und das mit dem Explain Analyse gelesen.

    So hab ich rausgefunden, dass ich ausversehen einen wichtigen Foreign Key Index gelöscht hatte (hab die Selbstreferenz völlig vergessen).

    Mal eine Frage zur Index-Nutzen Analyse: Mit
    select * from pg_statio_all_indexes
    kann man doch an den Spalten idx_blks_read und idx_blks_hit ablesen ob der entsprechende Index überhaupt genutzt wird, oder?

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

    Standard

    Ja, vorausgesetzt du hast stats_row_level und stats_block_level in der Config angeschaltet.
    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

  4. #14
    tigger ist offline Benutzer
    Registriert seit
    02.05.2008
    Beiträge
    41

    Standard

    Danke, stats_block_level war noch nicht an.

    Hier nochmal eine kleine Zusammenfassung:

    Auf meinem Testsystem konnte ich durch ein VACUUM FULL nach dem einspielen eines dumps die 18 Mio Werte neusetzen.

    Allerdings hab ich es nun ein wenig anders gemacht.

    Erst die Tabelle mit LOCK t1 gesperrt.
    Mit einem

    CREATE TEMP TABLE AS SELECT id, (zeitstempel), a, b FROM t1;
    (zeitstempel::timestamp without time zone + (((id % 100000)::numeric/100000)::numeric || ' seconds')::interval)::timestamp without time zone as zeitstempel

    hab ich alles erstmal in eine temporäre Tabelle gepackt, und die zu updatende Spalte gleich geändert.
    Statt des random() hab ich nun die serial-spalte und modulo benutzt.

    Bei der Ursprungstabelle hab ich alle indexe gelöscht, trigger deaktiviert, constraints gedropt, und Rules gelöscht.

    Dann die Tabelle truncated und die Werte aus der temporären Tabelle zurückgespielt.
    Anschließend die constraints, indexe, trigger, und Rules wiederhergestellt.

    Und das Beste: Das ganze in einer Transaktion
    Danach nur noch ein VACUUM FULL und alles war wieder schön.

    Dies hat auf meinem Testsystem 40 Minuten gedauert.

    Bleibt zu hoffen, dass es heut Nacht auf dem Echt-System auch so klappt.

  5. #15
    tigger ist offline Benutzer
    Registriert seit
    02.05.2008
    Beiträge
    41

    Standard

    Wie es immer so ist, auf dem Testsystem geht's immer schneller

    Es hat alles funktioniert, allerdings hat es statt 40 min satte 4 Stunden gedauert.

    Der Unterschied kann durch die Hardware und das andere Betriebssystem zusammenhängen. Auf dem Testsystem läuft Gentoo Linux und auf dem Echt-System MS Windows Server 2003.

    Danke für eure Hilfe!

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

    Standard

    Zitat Zitat von tigger Beitrag anzeigen
    Wie es immer so ist, auf dem Testsystem geht's immer schneller

    Es hat alles funktioniert, allerdings hat es statt 40 min satte 4 Stunden gedauert.

    Der Unterschied kann durch die Hardware und das andere Betriebssystem zusammenhängen. Auf dem Testsystem läuft Gentoo Linux und auf dem Echt-System MS Windows Server 2003.

    Danke für eure Hilfe!
    Tja. OpenSource-Programme fühlen sich halt auf einem OpenSource-System schlicht wohler...

    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 2 von 2 ErsteErste 12

Ähnliche Themen

  1. Antworten: 2
    Letzter Beitrag: 08.02.2011, 12:20
  2. Rollback mit Extra Anweisung
    Von CvonS im Forum Andere Datenbanken
    Antworten: 1
    Letzter Beitrag: 01.07.2009, 15:00
  3. Frage zu Triggern und Rollback bzw. Commit
    Von Christian im Forum Trigger und Funktionen
    Antworten: 9
    Letzter Beitrag: 18.08.2006, 00:58
  4. Antworten: 2
    Letzter Beitrag: 23.07.2006, 20:06
  5. Rollback bei Fehler in Transaktion
    Von mwbond im Forum Programmierung
    Antworten: 10
    Letzter Beitrag: 04.01.2006, 16:30

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