Параллельные планы / запросы в AWS Aurora Postgres

Параллельно я имею в виду распределение рабочей нагрузки одного (аналитического) запроса по нескольким потокам или даже репликам.

Я вижу, что OSS Postgres поддерживает их с 9.6: https://www.postgresql.org/docs/9.6/static/parallel-plans.html

AWS Aurora добавил предварительный просмотр этого, но только для варианта MySQL: https://aws.amazon.com/about-aws/whats-new/2018/02/amazon-aurora-parallel-query-is-available-for-preview/

Но обычная AWS RDS (не Aurora) поддерживает их благодаря наличию Postgres 9.6: https://aws.amazon.com/blogs/database/performing-parallel-queries-and-phrase-searching-with-amazon-rds-for-postgresql-9-6-1/

  1. Правильно ли я понимаю, что AWS Aurora Postgres не поддерживает параллельный план?
  2. Если это так, означает ли это, что обычный RDS Postgres может быть более производительным, чем Aurora для аналитических запросов?
  3. Любые знания о будущей поддержке параллелизма запросов для Aurora Postgres?

Большое спасибо!

1 ответ

Решение

Я слышал только о параллельном запросе для Aurora MySQL совместимого издания. Я предполагаю, что эта функция все еще находится в бета-версии и в настоящее время имеет много ограничений. Я думаю, что Amazon в первую очередь фокусируется на версии, совместимой с MySQL. Когда дело доходит до сравнения PostgreSQL RDS и Aurora, трудно сказать, потому что это зависит от конкретного случая использования. Архитектура у них обоих совершенно разная.

https://www.slideshare.net/AmazonWebServices/deep-dive-on-the-amazon-aurora-postgresqlcompatible-edition-dat402-reinvent-2017

Если вам нужен параллельный запрос, возможно, вам стоит взглянуть на AWS Redshift. Это PostgreSQL 8.0.2 с множеством дополнительных функций, таких как параллельный запрос или столбцовое хранилище:

https://docs.aws.amazon.com/redshift/latest/dg/c_redshift_system_overview.html

  1. Да ты прав.
  2. Трудно сказать, потому что это зависит от конкретного случая использования.
  3. Я принимал участие в программе Aurora Parallel Query Preview, но пока не видел никакой информации о совместимом с PostgreSQL выпуске.

Некоторые объяснения:

"параллельные планы" в postgres9.6+ будут делать то, что вы хотите: ускорить один запрос, начав параллельные процессы выполнения.

"Параллельный запрос" Aurora для MySQL - это нечто совершенно иное, хотя это также приводит к тому, что вы хотите.

Aurora (для MySQL и postgres) имеет специальный распределенный слой хранения, который хранит 6 избыточных копий, которые можно использовать для чтения-реплики и восстановления после сбоя. "параллельный запрос" использует этот уровень хранения (который включает в себя хранилище со связанными ЦП для управления хранилищем), чтобы выполнить некоторые вычисления запроса, разгрузив виртуальную машину БД.

Например, отфильтровывая строки и столбцы, не относящиеся к запросу, можно перенести на уровень хранения вместо чтения всех данных обратно в виртуальную машину и их отбрасывания там.

Итак, в заключение:

"параллельные планы" в postgres9.6+ создают параллельные процессы выполнения внутри виртуальной машины

"параллельный запрос" в Aurora откладывает вычисления на уровень хранения, разгрузив виртуальную машину.

Ответы на ваши вопросы:

  1. Правильный
  2. Возможно: см. Выше. Зависит от выгоды, которую вы получаете, отодвигая фильтрацию данных на уровень хранилища.
  3. Согласно блогу AWS, "параллельный запрос" для postgres находится в стадии разработки: "Мы запускаем с поддержкой MySQL 5.6 и работаем над поддержкой MySQL 5.7 и PostgreSQL". https://aws.amazon.com/blogs/aws/new-parallel-query-for-amazon-aurora/

Я думаю, что для поддержки "оперативной аналитики в реальном времени" в транзакционной системе postgres необходимо некоторое "значительное" увеличение postgres для аналитики. "параллельные планы" в 9.6+ - это начало. Аврора "параллельный запрос" - это другой, другой подход. Могут быть и другие подходы к ускорению аналитики на postgres... Я хотел бы увидеть такие решения для нескольких облаков за пределами AWS: Azure, GCP.

Я отправил запрос на Azure. Пожалуйста, оставьте отзыв там, если вы согласны:

https://feedback.azure.com/forums/597976-azure-database-for-postgresql/suggestions/35794984-transactional-db-with-analytics

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