Короткий ответ: НЕТ и НЕТ .
Длинный ответ: На самом деле, это большой вопрос, поскольку он углубляется в концепции транзакций и как работает механизм, но я думаю, чтоПолный ответ может занимать большую часть главы о хорошей книге и выходит за рамки этого сайта.
Первый , имейте в виду, что двигатель может работать в нескольких режимах изоляции:снимок, чтение зафиксировано и т. д. Я могу порекомендовать хорошие исследования по этой теме (это может занять несколько дней).
Второй , двигатель имеет уровень детализации и попытается использовать«самый маленький», но может увеличивать его по требованию, в зависимости от многих факторов, например: «понадобится ли этой операции разделение страницы?»
Третий , BEGIN
, COMMIT
, ROLLBACK
работают больше как "семафор", помечая, как изменения поэтапно переходят от "памяти" к "диску". Это намного сложнее, чем это, и поэтому я использую кавычки.
При этом «транзакция по умолчанию» будет использовать гранулярность строки в режиме изоляции с фиксацией чтения. Ничто не говорит о том, как блокировки будут выдаваться так или иначе. Это зависит от таких вещей, как внешние ключи, триггеры, размер таблицы и т. Д.
TLDR: это зависит от множества мелких деталей, характерных для вашего сценария. Лучший способ выяснить это путем тестирования.