Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PostgreSQL Новый топик    Ответить
 Вопрос про запись в WAL  [new]
Безенчук
Member

Откуда:
Сообщений: 22
В документации к PostgreSQL (возьмём для определённости 11 версию), сказано, что для буферизации журнала предзаписи в памяти сервера выделяется кусок, размером wal_buffers. В начало этого блока памяти постоянно записывается информация об изменениях, произведённых с данными таблиц и индексов, команды DDL и т.д. и т.п. По мере добавления в буфер новых записей, самая первая запись потихоньку продвигается к концу буфера и как только ей уже будет некуда двигаться (вся буферная память заполнена) эта запись сбрасывается на диск и сохраняется в WAL-файл. Правильно ли понят мною этот процесс или же записи из буфера в WAL-файл попадают не по одной, а порциями?
23 май 21, 13:55    [22325858]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про запись в WAL  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 4785
Безенчук
В документации к PostgreSQL (возьмём для определённости 11 версию), сказано, что для буферизации журнала предзаписи в памяти сервера выделяется кусок, размером wal_buffers. В начало этого блока памяти постоянно записывается информация об изменениях, произведённых с данными таблиц и индексов, команды DDL и т.д. и т.п. По мере добавления в буфер новых записей, самая первая запись потихоньку продвигается к концу буфера и как только ей уже будет некуда двигаться (вся буферная память заполнена) эта запись сбрасывается на диск и сохраняется в WAL-файл. Правильно ли понят мною этот процесс или же записи из буфера в WAL-файл попадают не по одной, а порциями?


Все есть в документации...
"The contents of the WAL buffers are written out to disk at every transaction commit"

Так же для лучшего понимания рекомендую почитать
https://www.postgresql.org/docs/13/wal-configuration.html
и
https://www.postgresql.org/docs/13/runtime-config-wal.html#GUC-WAL-BUFFERS

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
23 май 21, 22:10    [22325979]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про запись в WAL  [new]
Безенчук
Member

Откуда:
Сообщений: 22
Maxim Boguk
Так же для лучшего понимания рекомендую почитать
https://www.postgresql.org/docs/13/wal-configuration.html
и
https://www.postgresql.org/docs/13/runtime-config-wal.html#GUC-WAL-BUFFERS
После прочтения именно этой части документации, правда в переводе на русский
https://postgrespro.ru/docs/postgresql/11/wal-configuration
и
https://postgrespro.ru/docs/postgresql/11/runtime-config-wal#GUC-WAL-BUFFERS возник данный вопрос.
Maxim Boguk
Все есть в документации...
"The contents of the WAL buffers are written out to disk at every transaction commit"
Вот тут как раз и есть кроется для меня неясность: каких именно буферов? Всех, тех что вытесняются из разделяемой памяти, используемой для буферизации WAL, или же тех, что относятся к фиксируемой транзакции?
23 май 21, 22:51    [22325984]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про запись в WAL  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 4785
Безенчук
Maxim Boguk
Так же для лучшего понимания рекомендую почитать
https://www.postgresql.org/docs/13/wal-configuration.html
и
https://www.postgresql.org/docs/13/runtime-config-wal.html#GUC-WAL-BUFFERS
После прочтения именно этой части документации, правда в переводе на русский
https://postgrespro.ru/docs/postgresql/11/wal-configuration
и
https://postgrespro.ru/docs/postgresql/11/runtime-config-wal#GUC-WAL-BUFFERS возник данный вопрос.
Maxim Boguk
Все есть в документации...
"The contents of the WAL buffers are written out to disk at every transaction commit"
Вот тут как раз и есть кроется для меня неясность: каких именно буферов? Всех, тех что вытесняются из разделяемой памяти, используемой для буферизации WAL, или же тех, что относятся к фиксируемой транзакции?


Всех.
PS: не читайте русские переводы документации... и фильмы в переводе не смотрите.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
23 май 21, 23:04    [22325986]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про запись в WAL  [new]
Безенчук
Member

Откуда:
Сообщений: 22
Maxim Boguk
Всех.
Выходит, что фиксация любой транзакции приводит к полному перемещению всех буферов WAL из памяти на диск и значения pg_current_wal_lsn и pg_current_wal_insert_lsn на некоторое время совпадут, пока в буфер вновь что-то не будет записано?
Maxim Boguk
PS: не читайте русские переводы документации... и фильмы в переводе не смотрите.
А так же советских газет до обеда. Хорошо, постараюсь.
24 май 21, 09:56    [22326058]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про запись в WAL  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 4785
Безенчук
Maxim Boguk
Всех.
Выходит, что фиксация любой транзакции приводит к полному перемещению всех буферов WAL из памяти на диск и значения pg_current_wal_lsn и pg_current_wal_insert_lsn на некоторое время совпадут, пока в буфер вновь что-то не будет записано?


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

pg_current_wal_lsn displays the current write-ahead log write location in the same format used by the above functions. Similarly, pg_current_wal_insert_lsn displays the current write-ahead log insertion location and pg_current_wal_flush_lsn displays the current write-ahead log flush location. The insertion location is the “logical” end of the write-ahead log at any instant, while the write location is the end of what has actually been written out from the server's internal buffers, and the flush location is the last location known to be written to durable storage. The write location is the end of what can be examined from outside the server, and is usually what you want if you are interested in archiving partially-complete write-ahead log files. The insertion and flush locations are made available primarily for server debugging purposes.

таки да.

Основной вопрос - какую задачу вы решаете что полезли в эти дебри фактически отладочной информации.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
24 май 21, 10:55    [22326076]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про запись в WAL  [new]
Безенчук
Member

Откуда:
Сообщений: 22
Maxim Boguk, задача, которую я решаю - это подготовка базы данных к предстоящему увеличению в несколько (до 5) раз нагрузки. Поэтому я разбираюсь, как работают вспомогательные процессы Postgres, которые пишут на диск.
24 май 21, 11:19    [22326094]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про запись в WAL  [new]
mefman
Member

Откуда:
Сообщений: 3470
Безенчук
Maxim Boguk, задача, которую я решаю - это подготовка базы данных к предстоящему увеличению в несколько (до 5) раз нагрузки. Поэтому я разбираюсь, как работают вспомогательные процессы Postgres, которые пишут на диск.

в таком случае - вы занимаетесь ерундой.
24 май 21, 11:51    [22326124]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про запись в WAL  [new]
Безенчук
Member

Откуда:
Сообщений: 22
mefman
в таком случае - вы занимаетесь ерундой.
Думаю, что не совсем ерундой, скорее - не в том направлении.
24 май 21, 11:56    [22326126]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про запись в WAL  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 4785
Безенчук
mefman
в таком случае - вы занимаетесь ерундой.
Думаю, что не совсем ерундой, скорее - не в том направлении.


Явно не в том (судя по вашему вопросу).

Я бы рекомендовал начинать с нагрузочного тестирования на требуемый уровень нагрузки + 30-50%.. и после этого смотреть где у вас узкие места (практика показывает что угадать заранее даже с 20+ годами опыта почти не реально при таком росте нагрузки кроме совсем уж очевидных случаев когда процессора и так уже не хватает).



--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru

Сообщение было отредактировано: 24 май 21, 15:23
24 май 21, 15:04    [22326267]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про запись в WAL  [new]
mefman
Member

Откуда:
Сообщений: 3470
Безенчук
mefman
в таком случае - вы занимаетесь ерундой.
Думаю, что не совсем ерундой, скорее - не в том направлении.

Ну и в общем случае - читайте про тюнинг автовакуума, чекпойнтера и бгврайтера.
24 май 21, 15:32    [22326289]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос про запись в WAL  [new]
Безенчук
Member

Откуда:
Сообщений: 22
Maxim Boguk, mefman, спасибо!
24 май 21, 18:13    [22326417]     Ответить | Цитировать Сообщить модератору
Все форумы / PostgreSQL Ответить