PostgreSQL координирует несколько операторов, выполняющихся одновременно, используя подход с именем MVCC .В наиболее распространенных случаях несколько читателей или писателей сосуществуют без какого-либо вмешательства друг в друга.Вполне возможно, что две сессии, выполняющие различные операции чтения и записи, могут мешать друг другу.Например, второй сеанс, пытающийся ОБНОВИТЬ строку, уже ОБНОВЛЕННУЮ все еще выполняющейся транзакцией, заблокирует ожидание первого сеанса, чтобы либо зафиксировать, либо прервать.
В некоторых других ситуациях два сеанса, выполняющие что-то подобное, будут взаимодействовать, но это сделано для повышения производительности.Например, если один сеанс выполняет гигантский запрос последовательного сканирования всей таблицы, а затем второй сеанс начинает делать то же самое, второй присоединится, чтобы разделить работу, выполняемую первым.Это все прозрачно для вас, но может значительно ускорить, как быстро завершается каждый запрос.
Главное, о чем следует беспокоиться при одновременном запуске нескольких соединений, - это когда вы начинаете выполнять операторы UPDATE и DELETE, которые принимают блокировкина предметы в базе данных.Они могут легко мешать друг другу, и в результате второе утверждение часто заканчивается ожиданием завершения первого, прежде чем оно продолжится.Это также описано в главе документации, о которой я уже упоминал.