Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

"feinere" Sperren mit readpast/readuncommitted

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von Sputnik, 27 Juni 2012.

  1. Sputnik

    Sputnik Neuer Benutzer

    Hallo zusammen,

    folgende Situation:
    auf eine Tabelle wird aus einer Multithreaded-Anwendung zugegriffen.
    Alle Select Operationen sind ohne Transaktion, alle Updates oder Inserts mit Transaktionen.

    Es kommt recht häufig vor, dass eine Select Anweisung viel Zeit kostet, da diese wartet, bis ein gesperrter Datensatz freigegeben wird.

    Dazu kommen ein paar Trigger die nach Update oder Insert wiederum selber Updates auslösen.

    Im Zusammenspiel dieser Faktoren kommt es hin und wieder zu einem Deadlock.
    Alles nicht so tragisch, die Datenbank wählt einen Prozess als Opfer und löst so den Deadlock auf.

    Unschön ist dies natürlich trotzdem und ich möchte die Deadlocks beseitigen.

    Diesbezüglich hab ich mich mit readpast / readuncommitted beschäftigt.
    Readpast sollte mir im select alle nicht gesperrten Datensätze zurückliefern.
    Readuncommitted sollte alle Datensätze aber mit dirty reads zurückliefern.

    Ich habe dieses Zusammenspiel aus Multithreading und Triggern soweit aufgelöst (glaube ich), dass ich denke man könnte die Deadlocks beseitigen, wenn, ja wenn es die Möglichkeit gibt, readpast o.ä. "verfeinert" einzusetzen..
    Im Sinne von: Das Select soll Sperren beachten, die durch ein Update verursacht werden, aber es soll Datensätze ignorieren, die gerade durch eine Insert Transaktion gesperrt sind.

    Und nun die Frage: geht das? Und wenn ja, wie?

    MfG
     
  2. PLSQL_SQL

    PLSQL_SQL Datenbank-Guru

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden