powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Интенсивное обновление СУБД + autovacuum. Золота середина?!
9 сообщений из 34, страница 2 из 2
Интенсивное обновление СУБД + autovacuum. Золота середина?!
    #38941625
kamakama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim BogukkamakamaMaxim Boguk,

При стандартной работе AV получается так, что он отследит изменения в таблицах autovacuum_vacuum_threshold (например) = 10000 (это произойдет через секунд 30 после начала работы с партицией), и потом начнет ее оптимизировать. На партицию уходит по 30 минут времени в среднем. А в это время ее все равно продолжают пользовать другие вычислители и довольно активно (расчет не кончен). Получается рост нагрузки, который заметно тормозит сам процесс расчетов. Вот я и пытаюсь подобрать наиболее оптимальный режим. Думаю над autovacuum_vacuum_scale_factor, поставить его в 0.5, что бы максимально снизить влияние на работу вычислителей. Или воспользоваться идеей п.3 в асинхронном режиме для каждой партиции.

Вообще чем меньше scale factor тем меньше будет влияние 1 отработки autovacuum. Это вообще распостраненное заблуждение что подняв scale factor вы сделаете autovacuum более легким... да он будет запускаться реже но будет куда тяжелее для базы при отработке.

Про рост нагрузки по подробнее, рост какой нагрузки CPU? IO utilization? Графики CPU и io utlization (и задно writes/s reads/s) есть?
Может у вас просто ресурсов на сервере под ваши задачи не хватает? C вашими задачами я бы смотрел в сторону расширения памяти чтобы все или большая часть всего нужного влезала в память (и без виртуалок всяких они мешают локализовывать узкие места).
Т.е. я пока вижу утверждения не подтвержденные ни цифрами ни графиками ни даже хотя бы обьяснением что именно тормозит
(" тормозит сам процесс расчетов" - это не описание проблемы ни разу).
1) autovacuum_vacuum_scale_factor = 0.1 Это понятно, что если при равномерной загрузке сервера чем чаще запускать, тем быстрее будет работать. У меня же штука в том, что загрузка не равномерна
2) С подтверждением сложнее, сейчас тащим на физическую машину с выделенными под clog и xlog дисками на 15000 rpm и на ней проводим испытания. Хотя первые результаты есть. Загрузка IO минимальна, основные нагрузки ложатся на CPU (держит только 32 потока). Так что будем оптимизировать запросы
...
Рейтинг: 0 / 0
Интенсивное обновление СУБД + autovacuum. Золота середина?!
    #38941703
tadmin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kamakamaА в самом тексте ставятся маркеры, для отображения информации. Да, это дублирующая операция и в принципе можно каждый раз восстанавливать маркеры "налету" при запроса текста, но это накладно с точки зрения ресурсов (нужно рассчитывать в том числе случаи, когда маркеры накладываются друг на друга. Даже если это делать с конца строки, то все равно накладно.

Есть, к примеру, текст на 10-12К знаков. Вы находите в нем какие-то слова и ставите маркер. Так?
За сколько update вы расставите N маркеров на на 1 текст? Если за один, это нормально.
Если за N, то у вы создаете N мертвых записей на ровном месте. У вас "Алгортим Шмоэля":
http://russian.joelonsoftware.com/Articles/BacktoBasics.html

Неясно, зачем размеченный текст хранить в транзакционной таблице postgres? Храните в ней поисковый индекс и ссылку на текст, но не обновляйте его ради маркеров. Можно вынести хранилище маркированных текстов в узкую таблицу с ключом, а в транзакционной хранить только ключ от актуальной версии..

__
Попахивает сеошным сервисом..
...
Рейтинг: 0 / 0
Интенсивное обновление СУБД + autovacuum. Золота середина?!
    #38941712
kamakama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tadmin,

Не волнуйтесь, за один:) Не все так плохо. Чисто технологически текст хранится не целиком, а по предложениям, но все маркеры в рамках предложения пишутся за один UPDATE. Типа такого:
update split_article set word = ' Именно из-за этих угроз в этом году в <#188,301#>Багдаде</#188,301#> были отменены различные мероприятия, связанные с празднованием <#0,72231932#>Рождества</#0,72231932#>.' where id_article = 242182 and id = 9432163;
...
Рейтинг: 0 / 0
Интенсивное обновление СУБД + autovacuum. Золота середина?!
    #38941744
kamakama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tadmin,

И еще - маркировки в тексте используются СУГУБО для отображения в клиентском софте, ни в каких расчетах они участия не принимают. Вообще, моя точка зрения такова, что все плюшки, которые связаны с подготовкой информации к отображению, должны быть отработаны самой системой отображения или клиентом(ну, кроме хранения метаописаний). Но в этом конкретном случае получается, что клиентов 2 - один тот, который считает, другой тот, который показывает. И получается, что второй клиент пересчитывал бы это у себя КАЖДЫЙ раз, когда обращался бы к тексту, в то время как первый клиент может сделать это ОДИН раз за проход.
...
Рейтинг: 0 / 0
Интенсивное обновление СУБД + autovacuum. Золота середина?!
    #38941762
tadmin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kamakama,
думаю, всем уже ясно, что решение проблемы нужно искать в архитектуре вашей системы, а не в архитектуре postgres и работе autovacuum.

Нужно вычленить самые дорогие для postgres операции. IMHO, это разметка текста.

Нельзя ли хранить разметку отдельно, а композитное поле (текст+маркер) обновлять при первом обращении. Или у вас все данные "горячие"?
...
Рейтинг: 0 / 0
Интенсивное обновление СУБД + autovacuum. Золота середина?!
    #38941798
kamakama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tadmin,

Еще раз подчеркиваю, что разметка текста (генерация строки запроса см. выше) выполняется в вычислителе, PG пишет только результат (собственно, выполняет указанный запрос). То есть на самом деле Вы говорите, что самая дорогая операция UPDATE. Это логично, поэтому сейчас я думаю, как это подправить. Возможно, сделаю через балансировку нагрузки, возможно, через запись в UNLOGGED и дальнейшую синхронизацию. Если будут интересные результаты, то напишу
...
Рейтинг: 0 / 0
Интенсивное обновление СУБД + autovacuum. Золота середина?!
    #38941830
tadmin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kamakama что самая дорогая операция UPDATE.
Так и есть. И чем больше размер записи, тем больше корма для вакуума и дороже для IO.
...
Рейтинг: 0 / 0
Интенсивное обновление СУБД + autovacuum. Золота середина?!
    #38941853
kamakama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tadmin,

Для вакуума да, а вот с IO сложнее. Сейчас IO wait time меньше процента, основная нагрузка на CPU 80-85%.
...
Рейтинг: 0 / 0
Интенсивное обновление СУБД + autovacuum. Золота середина?!
    #38949932
kamakama
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В перерыве между другими делами. В принципе, жестко настроенный автовакуум не сильно подтормаживает (3-5% от CPU, хотя субъективно заметно). Есть некоторая проблема с производительностью (40-48 исполнителей, одновременно пишущих результаты сильно грузят CPU, очереди на харды нет). Была проблема с блокировками таблиц результатов при записи (исполнители конкурировали друг с другом жестко) , но ее успешно решили балансировкой нагрузки по партициям (если интересно кому, то расскажу как). Собственно, все получилось, единственное, что 4 ядра маловато, но это уже общие проблемы. Всем спасибо за ответы
...
Рейтинг: 0 / 0
9 сообщений из 34, страница 2 из 2
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Интенсивное обновление СУБД + autovacuum. Золота середина?!
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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