To skromne pytanie zadane w duchu pogłębiania mojej wiedzy; uprzejmie bądź łagodny w swojej odpowiedzi.
Jako programista aplikacji od dłuższego czasu wiem na pewnym poziomie, czym jest transakcja (używam ich cały czas). Pomijając chwilowe poziomy izolacji transakcji, na wysokim poziomie transakcja pozwala na całkowite lub całkowite ukończenie bloku pracy i pozwala na pewną izolację od innych działań modyfikujących bazę danych.
Wiem także, czym (w różnych bazach danych) jest blokada, a przynajmniej jak ona się zachowuje (jeśli zablokuję tabelę w sposób jawny, żaden inny proces ani wątek nie może zaktualizować niczego o tej tabeli).
Najbardziej wyraźnie nie jestem pewien: w różnych bazach danych, kiedy jawnie blokuję wiersz lub tabelę, czy stosuję dokładnie te same konstrukcje, które są używane przez narzędzia transakcyjne bazy danych pod osłonami, aby transakcja działała poprawnie?
To znaczy, przychodzi mi do głowy, że aby transakcja była atomowa i odizolowana, musiała blokować. Czy to zainicjowane przez transakcję, ukryte tranzytowanie blokowanie jest tym samym rodzajem blokowania, do którego różne bazy danych pozwalają mi uzyskiwać dostęp za pomocą konstrukcji takich jak polecenia SELECT FOR UPDATE
jawne LOCK
? Czy te dwie koncepcje są zupełnie inne?
Jeszcze raz przepraszam za naiwność tego pytania; Cieszę się, że mogę wskazać bardziej fundamentalne źródła.