2015-11-26 2 views
0

У нас работает кластер 5 dc1.large и возникают проблемы с масштабированием нашей загрузки данных.Выполняет ли красное смещение сериализацию операций записи?

Каждый «погрузчик» представляет собой отдельный процесс, который: - запускает команду COPY из S3 в промежуточную таблицу - то удаление выполняется на живом столе (для удаления строк, которые находятся в промежуточной таблице) - наконец, данные промежуточной вставляется в основной таблице

, приведенный выше, в основном, рекомендуемый метод в doc:

важная деталь следует отметить, что каждый погрузчик работает на отдельном наборе таблиц (т.е. существует отсутствие конкуренции между загрузчиками, поскольку они работают с различными наборами данных клиента). Таким образом, загрузчик один w плохо скопируйте в таблицу L1_Staging и, в конечном счете, в таблицу L1_main, второй загрузчик скопирует в L2_staging и, в конечном счете, в таблицу L2_main и т. д.

Что мы замечаем, так это то, что, когда мы параллельно работаем с несколькими загрузчиками, время работы увеличивается, как если бы redshift выполняет сериализацию всех операций записи. Опять же, не существует конкуренции за блокировку.

Почему мы видим этот образец? Правильно ли красное смещение не обрабатывает параллельную запись?

+0

Возможно ли, что записи используют доступную пропускную способность для хранения? Если запрос связан с I/O, то дополнительные потоки не будут работать быстрее. –

+0

Запрос определенно связан с i/o, его большая вставка с последующим удалением, за которым следует другая вставка. Redshift - это черный ящик, поэтому я не знаю, сколько пропускной способности ввода-вывода я потребляю с каждым запросом. – maxTrialfire

ответ

1

Да, красное смещение действительно сериализует все операции. Все поставлено в очередь в очереди WLM (управление рабочей нагрузкой)

1

Вы получите лучшую производительность, если сможете split each load в несколько файлов, которые кратно узлам (5 в вашем случае). С одним файлом вы ограничены пропускной способностью одного узла.

Полезно использовать manifest file с несколькими файловыми нагрузками. Также сжимайте свои файлы и включайте сжатие в столбцах таблицы. Сжатие таблицы добавляет вычисления, но данные затем могут быть перемещены между узлами быстрее, чтобы получить, нужно ли ему идти (узел загрузки не совпадает с узлом покоя).

Поскольку вы выполняете частое и тяжелое удаление, вам нужно запланировать regular vacuum operations по затронутым таблицам.

Запросы (включая копии) могут выполняться одновременно, но одновременное число ограничено ресурсами (по умолчанию это 5 на узел). Это может быть немного изменено. Таким образом, вы должны иметь возможность эффективно загружать разные таблицы. Как указано выше, проблема, вероятно, имеет больше общего с загрузкой отдельных файлов. Ознакомьтесь с информацией о query queues.

Несколько other hints.

Смежные вопросы