Це скромне запитання, задане в дусі підвищення моїх знань; будьте ласкаві у своїй відповіді.
Як давній розробник додатків, я на якомусь рівні знаю, що таке транзакція (я їх постійно використовую). На даний момент, залишивши осторонь рівня ізоляції транзакцій, на високому рівні транзакція дозволяє повністю виконати блок робіт цілком або взагалі не допускати, а також передбачає певну ізоляцію від іншої діяльності, що змінює базу даних.
Я також знаю, що таке (в різних базах даних) блокування або, принаймні, як поводиться (якщо я заблокував таблицю явним чином, то жоден інший процес чи потік не можуть оновити що-небудь стосовно цієї таблиці).
Що мені найбільш чітко не зрозуміло, це те, що я в різних базах даних явно блокую рядок або таблицю, використовуючи ті самі конструкції, які використовуються засобами транзакцій бази даних під кришками, щоб зробити транзакцію належним чином?
Тобто мені здається, що для того, щоб транзакція була атомною та ізольованою, вона повинна робити певну блокування. Чи це ініційоване транзакцією приховане блокування того ж типу блокування, до якого різні бази даних дозволяють мені отримати доступ через такі конструкції, як SELECT FOR UPDATE
явні LOCK
команди? Або ці два поняття абсолютно різні?
Знову прошу вибачення за наївність цього питання; Я радий бути вказаним на більш фундаментальні джерела.