34.4. Планирование ресурсов #
При развёртывании встроенной аналитической платформы необходимо выделить достаточное количество вычислительных ресурсов для выполнения аналитических запросов. Количество требуемых ресурсов зависит от следующих параметров хранилища:
Общий объём OLAP-данных в хранилище. За более подробной информацией обратитесь к разделу Общий объём OLAP-данных в хранилище.
Объём данных, обрабатываемых стандартным аналитическим запросом. За более подробной информацией обратитесь к разделу Объём данных, обрабатываемых стандартным аналитическим запросом.
Требуемое время выполнения аналитических запросов. За более подробной информацией обратитесь к разделу Требуемое время выполнения аналитических запросов.
Количество аналитических запросов, выполненных за единицу времени. За более подробной информацией обратитесь к разделу Количество аналитических запросов, выполненных за единицу времени.
В этом разделе приведены рекомендации по определению необходимого количества вычислительных ресурсов для различных OLAP-нагрузок. После развёртывания встроенной аналитической платформы выполняйте мониторинг доступных вычислительных ресурсов и будьте готовы при необходимости выделить дополнительные ресурсы за пределами этих рекомендаций.
Для планирования ресурсов можно использовать результаты тестов производительности, выполненных Postgres Pro. За более подробной информацией обратитесь к разделу Результаты тестов производительности.
34.4.1. Общий объём OLAP-данных в хранилище #
Для Parquet-файлов, используемых в аналитических запросах, необходимо выделить достаточное количество свободного места в локальном, сетевом или S3-хранилище. Как правило, Parquet-файлы хранятся в сжатом формате, например Snappy или zstd, и составляют около 30% от первичных неструктурированных текстовых данных или данных таблиц Postgres Pro.
Хранилище должно иметь достаточную пропускную способность для поддержки всех аналитических запросов на чтение и запись при пиковых нагрузках.
34.4.2. Объём данных, обрабатываемых стандартным аналитическим запросом #
Для эффективного выполнения некоторых аналитических запросов требуется большое количество оперативной памяти, в частности:
Соединение двух больших таблиц
Агрегирование большого количество уникальных ключей
Сортировка больших таблиц
Если расширению pgpro_duckdb не хватает оперативной памяти для выполнения аналитического запроса, связанные с ним данные помещаются во временные файлы, что значительно увеличивает время выполнения такого запроса. Чтобы максимально увеличить общую пропускную способность кластера Postgres Pro и количество аналитических запросов, выполняемых за единицу времени, обрабатывайте большую часть аналитических запросов в оперативной памяти.
Однако временные файлы можно использовать при обработке ресурсоёмких аналитических запросов с большим временем выполнения (например, несколько часов).
Каждые 24 часа выполняйте мониторинг количества временных файлов, создаваемых расширением pgpro_duckdb, и избегайте пиковых значений. Временные файлы располагаются в каталоге PGDATA/.tmp
.
Объём оперативной памяти, необходимый для конкретной OLAP-нагрузки, зависит от количества и размера аналитических запросов в экземпляре Postgres Pro Enterprise. Выполняйте мониторинг доступной оперативной памяти и при необходимости выделяйте дополнительную оперативную память. Для изначального развёртывания выделите около 6 ГБ оперативной памяти на каждое ядро ЦП, зарезервированное для выполнения аналитических запросов.
34.4.3. Требуемое время выполнения аналитических запросов #
Некоторые аналитические запросы должны быть выполнены в течение ограниченного периода времени. В частности это относится к интерактивным запросам, а также к запросам, результаты которых должны быть доступны к определённой дате и времени, например к началу рабочего дня. Если для выполнения аналитических запросов выделено достаточно оперативной памяти, и для них не создаются временные файлы, время выполнения определяется количеством ядер ЦП, которые зарезервированы для выполнения аналитических запросов.
Для определения необходимого количества ядер ЦП используйте внутренние тесты производительности. В рамках таких тестов к тестовым данным выполняются чувствительные ко времени аналитические запросы. Размер и структура тестовых данных имитируют реальные данные, которые будут использованы.
Для изначального развёртывания зарезервируйте около 4 ядер ЦП на каждый аналитический запрос, то есть на каждого аналитика.
34.4.4. Количество аналитических запросов, выполненных за единицу времени #
После выделения вычислительных ресурсов, необходимых для выполнения аналитических запросов, посчитайте нагрузку от параллельно выполняемых аналитических запросов. Пик этой нагрузки зачастую происходит один раз в рабочее время или при выполнении ресурсоёмких ETL-задач.
Выполнение некоторых ETL-задач можно запланировать на конкретное время дня, в то время как для других задач, таких как выполнение незапланированных (ad-hoc) аналитических запросов, это сделать невозможно.
Избегайте пиковых OLAP-нагрузок за счёт равномерного распределения выполнения аналитических запросов в течение дня, оставляя при этом запас в 30% для непредвиденных задач.
Расширение pgpro_duckdb обрабатывает аналитические запросы линейно, пока ему хватает ресурсов ввода/вывода, оперативной памяти, а также ЦП. При истощении этих ресурсов производительность падает.
Рекомендации по избежанию истощения ресурсов:
Устраните узкие места в кластере Postgres Pro.
Снизьте пиковые OLAP-нагрузки.
Оптимизируйте выполнение аналитических запросов.
Перенесите ETL-задачи и незапланированные аналитические запросы на выделенный сервер Postgres Pro, например на асинхронную резервную реплику.