Я имею в виду 2 страницы документации на сайте PostgreSQL: # 1 и # 2. Исходя из этого, мы видим, что журнал транзакций сбрасывается на диск 5 раз в секунду (wal_writer_delay = 200ms), и мы также видим, что СУБД не будет сообщать о транзакции как успешной, пока она не будет зафиксирована в файле журнала, так как synchronous_commit = on by by дефолт.

Это дало бы нам теоретический пик в 5 успешных операций записи в секунду, если каждая выполняется в своей собственной транзакции, что часто имеет место. Причина в том, что журнал не записывается на диск быстрее, чем это.

И все же мы видим скорость в тысячах в секунду.

Как это работает?

Чтобы было ясно, я говорю о каждой записи в своей собственной транзакции (использование по умолчанию). Я знаю, почему массовые вставки не относятся к этому вопросу.

1 ответ1

1

Commits будет стоять в очереди и сбрасываться, когда будет написан WAL.

Таким образом, вы получите большие группы коммитов, пишущих 5 раз в секунду.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .