В основе данной публикации лежит интересная статья «Exploring Query Locks in Postgres». Статье уже 10 лет, но она не потеряла актуальности. От понимания того как работают блокировки зависит написание правильных запросов, которые способны выполняться параллельно и не мешать друг другу. Давайте рассмотрим наглядный пример. Для начала создадим базу «песочницу» с тремя полями: create database sandbox;
create table toys ( id serial not null, name character varying(36), usage integer not null default 0, constraint toys_pkey primary key (id) ); И запишем туда данные
insert into toys(name) values('car'),('digger'),('shovel'); Откроем два терминала, в каждом из них подключимся к только что созданной базе данных sandbox. Дадим им имена для того, чтобы пример был наглядным. Например Алиса и Боб. В консоли пишем команду sandbox=# \SET PROMPT1 '[Alice] %/%R%# '
Сначала приходит Алиса и осматрива