Можно ли гарантировать минимальное количество рабочих процессов для параллельной агрегатной функции в postgres?

У меня есть настраиваемое расширение параллельного агрегирования для Postgresql, и я хотел бы, чтобы по крайней мере N рабочих процессов выполняли агрегирование каждый раз, когда используется агрегатная функция.

Можно ли указать postgresql ВСЕГДА использовать по крайней мере N воркеров для этой функции?

1 ответ

Решение

Что вы можете сделать, так это установить параметр хранения parallel_workersна столе. Тогда при каждом параллельном сканировании этой таблицы используется столько рабочих. Но это не может быть сделано для каждой функции, что имеет смысл, потому что от таблицы зависит, полезен параллелизм или нет.

Кроме того, вы никогда не сможете гарантировать, что определенное количество рабочих процессов всегда будет использоваться, потому что максимальное количество параллельных рабочих процессов в кластере равно max_parallel_workers, и если этот предел будет достигнут, вы не получите параллельного рабочего, даже если оптимизатор захочет распараллелить.

Я бы просто оставил это решение оптимизатору.

Другие вопросы по тегам