Это скромный вопрос, заданный в духе расширения моих знаний; будьте любезны в своем ответе.
Как давний разработчик приложений, я знаю на каком-то уровне, что такое транзакция (я использую их все время). Оставляя в стороне уровни изоляции транзакций на данный момент, на высоком уровне транзакция позволяет полностью или совсем не завершить блок работы и обеспечивает определенную степень изоляции от других действий по модификации базы данных.
Я также знаю, что (в различных базах данных) это блокировка или, по крайней мере, как она себя ведет (если я каким-то образом явно блокирую таблицу, то никакой другой процесс или поток не может обновить что-либо об этой таблице).
То, о чем я наиболее отчетливо не понимаю, так это то, что в различных базах данных, когда я явно блокирую строку или таблицу, я использую те же самые конструкции, которые используются средствами транзакций базы данных под прикрытием, чтобы заставить транзакцию работать должным образом?
То есть мне приходит в голову, что для того, чтобы транзакция была атомарной и изолированной, она должна выполнять некоторую блокировку. Является ли эта блокировка, инициируемая транзакцией, скрытой трансакцией, той же самой блокировкой, что и различные базы данных, позволяющие мне получить доступ через конструкции, такие как SELECT FOR UPDATE
или явные LOCK
команды? Или эти два понятия совершенно разные?
Я еще раз прошу прощения за наивность этого вопроса; Я счастлив, что мне указывают на более фундаментальные источники.