/ / Czy transakcje bazy danych Oracle mogą pomóc w tym scenariuszu? - Oracle, transakcje, Oracle11g, współbieżność bazy danych

Czy transakcje bazy danych Oracle mogą pomóc w tym scenariuszu? - Oracle, transakcje, Oracle11g, współbieżność bazy danych

Pracuję z bazą danych Oracle (11g wydanie 2). Wyobraź sobie wiele połączeń, wykonując jednocześnie następujące czynności:

  1. Rozpocznij transakcję
  2. Sprawdź, czy istnieje określona wartość w tabeli unikalnych wartości
  3. Jeśli wartość nie istnieje, włóż ją
  4. Zatwierdź transakcję

Wydaje mi się, że jedynym sposobem zapobiegania konfliktom jest blokowanie połączeń od wykonania powyższej 4-etapowej sekwencji, podczas gdy inne połączenie wykonuje obecnie sekwencję 4-etapową.

Czy transakcje mogą doprowadzić do tego rodzaju szerokiego blokowania / blokowania w Oracle?

Z góry dziękuję za odpowiedzi i porady, jak najlepiej sobie poradzić z tym scenariuszem.

Odpowiedzi:

1 dla odpowiedzi № 1

Dodaj unikalne ograniczenie sprawdzające i zaimplementuj procedurę obsługi wyjątku, aby uzyskać kolejną sekwencję i spróbuj ponownie.

Zakłada to, że używasz pl / sql.

Alternatywą byłoby użycie sekwencji Oracle, z wielkością 1 pamięci podręcznej. Zapewni to również brak przerw w sekwencji 2. SELECT * FROM table_name FOR UPDATE, aby zablokować wszystkie odczyty z innych sesji ...