Параллельные планы / запросы в AWS Aurora Postgres - PullRequest
0 голосов
/ 28 августа 2018

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

Я вижу, что 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 Ответ

0 голосов
/ 23 октября 2018

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

«параллельные планы» в 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

...