Во-первых, я не говорил про дополнительно/недополнительно.
Я про то, что правильный read committed я себе могу представить без блокировок в транзакцыи -- а правильный serializable без них скорее всего невозможэн теоретически.
Кроме того, на практике -- таки блокирует дополнительно:
https://pastebin.com/tka1JWPrВсе SELECT FROM pg_locks выполнялись в параллельной сессии, они без индикатора транзакцыи в промпте.
Несложно заметить, что в serializable появилась ещё одна строка, SIReadLock , кроме двух строк от SELECT * FROM pg_locks, одной от транзакцыи, в которой выполняется SELECT FROM books и двух от самого запроса (видимо, блокирующих таблицу от DDL).
И это, замечу, при выборе по unique pkey, который успешно вернул строку. Когда оно там не находит чего-нибудь -- то с блокировками становится ещё веселее.