powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Постгре начинает тормозить на запросе при пороговом значении limit
6 сообщений из 31, страница 2 из 2
Постгре начинает тормозить на запросе при пороговом значении limit
    #39682847
Фотография Megabyte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А, правильно ли я понимаю, что dirtied - это чтение "мертвых" страниц, не удаленных vacuum?
...
Рейтинг: 0 / 0
Постгре начинает тормозить на запросе при пороговом значении limit
    #39682854
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MegabyteКоллеги, подскажите, а в Explain в:
Код: sql
1.
Buffers: shared hit=8357288 read=6165444 dirtied=44820 written=5590


Что означают последние 2 блока: dirtied, written? Что обозначают hit, read, я в курсе.
В Postgres-e информация о видимости записей хранится в заголовках самих записей. И также есть commit log, в котором хранится состояние транзакций. Если происходит rollback транзакции которая, к примеру, поменяла много записей, то просто меняется статус транзакции в commit log-е — rollback быстрый, но с “отложенной” работой.

Первый же запрос, который потом обращается к таким записям видит, что
1. транзакция откачена
2. у записей не выставлены биты видимости (эти биты нужны для скорости, чтобы все следующие запросы не лезли в commit log)
И он, проверив статус транзакции в commit log-е, меняет биты видимости в заголовке записи. Т.е. даже если это SELECT, он меняет данные. Изменения происходят в кэше (shared_buffers), изменённые блоки помечаются как грязные (dirty), т.е. требуют синхронизации с диском.

Если запросу нужно прочитать данные в кэш — а в Postgres-е всё взаимодействие происходит через кэш (в отличии от, скажем, ORACLE) — и в кэше нет свободного места, то происходит вытеснение самой “ненужной” страницы. Если при этом страница грязная, то её сначала надо сохранить на диск, т.е. даже SELECT может неожиданно начать писать (write) данные на диск.

Одно с другим не связано, т.е. могут быть только dirtied блоки при исполнении запроса, без written.
...
Рейтинг: 0 / 0
Постгре начинает тормозить на запросе при пороговом значении limit
    #39683320
Фотография Megabyte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Благодарю.
...
Рейтинг: 0 / 0
Постгре начинает тормозить на запросе при пороговом значении limit
    #39683948
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vyegorov а в Postgres-е всё взаимодействие происходит через кэш (в отличии от, скажем, ORACLE)
Дополню коллегу для автора темы.

Под обсуждением перевода яндекс почты с оракла на постгрескл в комментариях звучит неприкрытая боль.
"Под нашей нагрузкой postgres по I/O проигрывал в 4 раза. И как показал PGCon 2016, разработчики postgres'а в курсе всех проблем.
Например, нельзя отдать без малого всю память под разделяемый кэш, потому что алгоритм вытеснения буфера очень паршивый. Приходится активно использовать page cache, которым сложно управлять + двойное кэширование. Или нет нормального асинхронного I/O, потому что поддерживается 100500 платформ, во многих из которых этого и близко нет".

Плюс еще одна хорошая статья для автора темы от 2013-го года, старая, но краткая, Postgres. Как устроено кеширование.
...
Рейтинг: 0 / 0
Постгре начинает тормозить на запросе при пороговом значении limit
    #39683949
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Megabyte,

Вот тут еще отличное обсуждение, как наличие реплик заставляет делать автовакуум агрессивнее .

Это не сейчас Вам, но на будущее.
...
Рейтинг: 0 / 0
Постгре начинает тормозить на запросе при пороговом значении limit
    #39683991
Фотография Megabyte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2Andy_OLAP: Спасибо.
...
Рейтинг: 0 / 0
6 сообщений из 31, страница 2 из 2
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Постгре начинает тормозить на запросе при пороговом значении limit
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]