Нет необходимости явно блокировать что-либо. Оператор SELECT
всегда будет видеть непротиворечивый снимок таблицы, независимо от того, как долго он выполняется.
Результат не изменится, если вы заблокируете таблицу от одновременных изменений перед запуском SELECT
, но излишне будете вредить параллелизму.
Если вам нужно несколько запросов, чтобы увидеть согласованное состояние базы данных, запустите транзакцию с уровнем изоляции REPEATABLE READ
. Тогда все операторы в транзакции будут видеть одно и то же состояние базы данных.