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

Thema: Transaktion Problem

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

    Standard

    Du könntest in deiner Anwendung mal testweise autocommit ausschalten. Autocommit bedeutet, das jeder Befehl in PostgreSQL in eine Transaktion gekapselt wird. Sobald ein Befehl abgeschlossen ist, wird eine neue Transaktion gestartet ... die dann herumsitzt und wartet, bis der nächste Befehl ankommt.
    Ausschalten tut man das in der Anwendung bei den Verbindungseinstellungen.

    Übrigens ist deine "Definition" einer Transaktion auch nicht richtig.
    Es ist falsch, das ein SELECT keine Daten ändert. Im Gegenteil, durch den Select können Funktionen aufgerufen werden, die intern trotzdem Daten verändern.
    Aus diesem Grund wird jede Operation in einer Transaktion abgearbeitet, die du entweder in deiner Anwendung explizit startest oder die implizit von PostgreSQL gestartet wird (autocommit). Wird die Leseoperation erfolgreich beendet: schön. Gab es beim Lesen einen Fehler, können alle ev. aufgetretenen Änderungen zurückgerollt werden.

    Du hast Recht, das ein SELECT nicht blockierend ist, im Normalfall jedenfalls. Dein Problem ist, das die zweite Operation, die DDL-Änderung, einen sehr exklusiven Lock auf die Tabelle benötigt. Dieser Lock sperrt auch einen SELECT aus.

    Und was ich mich die ganze Zeit frage: was ist das für eine Tabellenänderung, die ihr da durchführt und warum stellt die ein Problem dar? Sprich, wie häufig führt ihr diese Änderung durch?
    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

  2. #12
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.467

    Standard

    Zitat Zitat von ads Beitrag anzeigen
    Du könntest in deiner Anwendung mal testweise autocommit ausschalten.
    Einschalten, ads. EINSCHALTEN.

    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

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

    Standard

    Wieso einschalten?
    Wenn ich den Standard richtig lese, ist das erzwingen einer Transaktion sowieso vorgeschrieben (nebenbei: wieder ein Punkt, gegen den Mysql verstößt?). Mit aktiviertem Autocommit (Default) wird nach jedem SQL Befehl ein COMMIT durchgeführt. Mit deaktiviertem Autocommit muss man das selbst erledigen.
    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
    akretschmer ist offline Super-Moderator
    Registriert seit
    29.10.2006
    Ort
    Dresden
    Beiträge
    5.467

    Standard

    Zitat Zitat von ads Beitrag anzeigen
    Wieso einschalten?
    Wenn ich den Standard richtig lese, ist das erzwingen einer Transaktion sowieso vorgeschrieben (nebenbei: wieder ein Punkt, gegen den Mysql verstößt?). Mit aktiviertem Autocommit (Default) wird nach jedem SQL Befehl ein COMMIT durchgeführt. Mit deaktiviertem Autocommit muss man das selbst erledigen.
    Weil die Anwendung 'idle in transaction' ist. Sicheres Zeichen für "\set AUTOCOMMIT off" (steht in meiner ~/.psqlrc). Und ja: wenn es deaktiviert ist, muß man selbst das COMMIT schicken. Tut die Anwendung nicht.
    Deswegen: mal einschalten, falls es geht. Dann dürfte ein select from foo anschließend ein alter foo einer anderen Anwendung nicht blockieren, weil ja ein AUTOCOMMIT kam. Okay?

    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

  5. #15
    Vierm ist offline Neuer Benutzer
    Registriert seit
    22.05.2007
    Beiträge
    11

    Standard

    moin,

    Dann dürfte ein select from foo anschließend ein alter foo einer anderen Anwendung nicht blockieren, weil ja ein AUTOCOMMIT kam. Okay?
    Zu Deinem Beispiel:

    nach einem Select auf die FOO ist es irrelevant auf welche Tabelle ich ein ALTER absetzte!!! ...es sind alle Blockiert!


    Autocommit: Nicht möglich das es etliche Befehle in der Anwendung gibt bei denen ein Autocommit das gewünschte unterbinden würde.

    ... Frust...

    Und was ich mich die ganze Zeit frage: was ist das für eine Tabellenänderung, die ihr da durchführt und warum stellt die ein Problem dar? Sprich, wie häufig führt ihr diese Änderung durch?
    Es handelt sich um eine Standarsoftware (= Normal-User) und einen Part für Admins. In dem Adminpart kann man ausschliesslich über die Software Tabellen ändern, Attribute hinzufügen, Löschen, ändern usw.
    Also die gesamte Anwendung so konfigurieren wie man es möchte und ist nicht abhängig von Programmierung.

    Ciao
    Geändert von Vierm (15.11.2007 um 09:55 Uhr)

Seite 2 von 2 ErsteErste 12

Ähnliche Themen

  1. Fehler Transaktion in Middleware?
    Von klimaschreck im Forum Programmierung
    Antworten: 10
    Letzter Beitrag: 17.08.2009, 09:57
  2. Transaktion bedingt abbrechen
    Von schoetbi im Forum SQL
    Antworten: 4
    Letzter Beitrag: 03.02.2009, 11:14
  3. Frage Transaktion über zwei Datenbanken
    Von billy-rat im Forum Allgemeines
    Antworten: 4
    Letzter Beitrag: 01.09.2008, 08:55
  4. Select Nextval in Transaktion
    Von byte im Forum SQL
    Antworten: 3
    Letzter Beitrag: 10.04.2007, 07:40
  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