pg_profile. Добавлено 10 серверов с которых собираются снимки.
Проблема
При каждом запуске заданий у случайных серверов получение выборки может запустится дважды с интервалом в несколько секунд или вовсе не запустится. Выглядит это так (внимание на время 12:30, 13:00, 15:30, 16:00):
Отсутствие сортировки в оконной функции в курсоре, определяющем подмножество серверов.
Функция take_sample_subset:
c_servers CURSOR FOR
SELECT server_id,server_name FROM (
SELECT server_id,server_name, row_number() OVER () AS srv_rn
FROM servers WHERE enabled
) AS t1
WHERE srv_rn % sets_cnt = current_set;
Поэтому каждый запуск "row_number() OVER ()" может выдать разный результат. Это заметно во время параллельного получения выборок с нескольких серверов, когда таблица servers обновляется.
Решение
Добавить сортировку: "row_number() OVER (ORDER BY server_id)"
Конфигурация
pg_cron. 20 заданий для параллельного получения снимков каждые 30 минут:
pg_profile. Добавлено 10 серверов с которых собираются снимки.
Проблема
При каждом запуске заданий у случайных серверов получение выборки может запустится дважды с интервалом в несколько секунд или вовсе не запустится. Выглядит это так (внимание на время 12:30, 13:00, 15:30, 16:00):
Причина
Отсутствие сортировки в оконной функции в курсоре, определяющем подмножество серверов. Функция take_sample_subset:
Поэтому каждый запуск "row_number() OVER ()" может выдать разный результат. Это заметно во время параллельного получения выборок с нескольких серверов, когда таблица servers обновляется.
Решение
Добавить сортировку: "row_number() OVER (ORDER BY server_id)"