AWS Redshift + Tableau Performance Booster
Я использую AWS Redshift в качестве бэк-энда для своего рабочего стола. Кластер AWS работает с двумя узлами dc1.large и таблицей базы данных, которую я анализирую, размером 30 ГБ (с включенным сжатием красного смещения), я выбрал Redshift вместо извлечения таблицы для проблемы производительности, но кажется, что прямое соединение Redshift намного медленнее, чем извлечение. Любые предложения, где я должен изучить?
3 ответа
Чтобы использовать Redshift в качестве бэкэнда для платформы BI, такой как Tableau, есть четыре способа устранения задержки:
1) Параллельность: Redshift не подходит для одновременного выполнения нескольких запросов, поэтому, прежде чем приступить к настройке базы данных, убедитесь, что ваш запрос не стоит в очереди за другими запросами. (Если вы единственный в кластере, это не должно быть проблемой.)
2) Размер таблицы: по возможности используйте статистические таблицы для повышения производительности. Меньшее количество строк для сканирования означает меньшее количество операций ввода-вывода и более быстрое выполнение!
3) Сложность запросов. В идеале вы хотите, чтобы инструмент BI создавал простые и быстро выполняющиеся запросы. Убедитесь, что ваши исходные таблицы работают быстро, и что Tableau не заставляет делать кучу объединений. Кроме того, если вашему запросу необходимо объединить несколько таблиц, убедитесь, что у всех больших таблиц одинаковый ключ распределения.
4) "Индексирование": технически Redshift не поддерживает истинную индексацию, но вы можете приблизиться к тому же, используя "чередующиеся" ключи сортировки. Традиционные составные ключи сортировки не помогут, но чередующийся ключ сортировки может позволить вам быстро получить доступ к строкам из нескольких векторов (например, date и customer_id) без необходимости сканирования всей таблицы.
Проверка на практике
После того, как все эти вещи оптимизированы, вы часто обнаружите, что вы все еще не можете быть такими быстрыми, как извлечение из Таблицы. Проще говоря, "быстрая" панель управления Tableau должна вернуть данные своему пользователю в течение <5 секунд. Если у вас на панели инструментов 7 визуальных элементов, и для возврата каждого из базовых запросов требуется 800 миллисекунд (что очень быстро для запроса к базе данных), то вы все еще просто не достигаете своей целевой производительности. Теперь, если только один из этих запросов займет 5 секунд или более, ваша панель будет работать медленно, независимо от того, что вы делаете.
В заключение Redshift можно настроить, используя подход, описанный выше, но это может или не может стоить усилий. Наилучшие приложения для использования оперативного запроса Redshift вместо Tableau Extracts - в тех случаях, когда данные физически слишком велики для создания экстракта, и когда вам требуются данные на уровне детализации, который делает невозможным предварительную агрегацию. Одна хорошая стратегия - создать основную панель мониторинга с использованием экстракта, чтобы исследование было максимально быстрым, а затем использовать прямые (живые) запросы Redshift для отчетов детализации (например, когда вы хотите точно узнать, какие клиенты свернуть в ваши итоги).
Несколько указателей, как показано ниже
1) Используйте вакуум и анализ после завершения вашего ETL 2) Вы создали таблицу с правильным ключом Dist и ключом сортировки 3) Агрегация, если это нормально с точки зрения гранулярности данных, требований и т. Д.
1.Удалите курсор, данные доступа к таблице из узла выноски красного смещения с помощью курсора. Курсор работает итеративно. Таким образом, влияя на производительность. 2. Выполните ручной анализ таблицы после выполнения операций с большой нагрузкой. https://docs.aws.amazon.com/redshift/latest/dg/r_ANALYZE.html3.Проверьте распределение ключей dist, чтобы избежать асимметрии данных и повысить производительность.