Вопрос: AWS Redshift: АНАЛИЗ СЖАТИЯ «Имя таблицы» — как сохранить результирующий набор в таблицу / присоединиться к другой таблице

#amazon-web-services #performance #amazon-redshift

#amazon-веб-сервисы #Производительность #amazon-redshift

Вопрос:

Я ищу способ сохранить результирующий набор АНАЛИЗА сжатия в таблицу / присоединить его к другой таблице, чтобы автоматизировать сценарии сжатия. Возможно ли это и как?

Ответ №1:

Вы всегда можете запустить анализ сжатия из внешней программы (я использую скрипт bash), прочитать результаты и сохранить их обратно в Redshift со вставками. Обычно это самый простой и быстрый способ, когда я сталкиваюсь с проблемами типа «нет маршрута от лидера к вычислительному узлу» в Redshift. Часто это одноразовые сценарии, которые не нуждаются в автоматизации или поддержке.

Если мне нужно что-то программное, я обычно пишу лямбда-функцию (или, возможно, программу на Python на ec2). Довольно просто, и скорость выполнения высока, но требует внешнего инструмента, и некоторым пользователям не нравится запускать что-то за пределами базы данных.

Если он должен быть полностью внутренним с красным смещением, я создаю процедуру, которая сохраняет результаты запроса только для лидера в курсоре, а затем зацикливается на курсоре, вставляя данные в таблицу. В основном то же самое, что считывать его, а затем вставлять обратно, но данные никогда не покидают Redshift. Это не слишком сложно, но выполняется медленно. Зацикливание на курсоре и вставка 1 строки за раз неэффективны. Последнее из них, которое я сделал, заняло 25 секунд для 1000 строк. Это было достаточно быстро для приложения, но если вам нужно сделать это на 100 000 строк, вам придется ждать некоторое время. Я никогда раньше не делал этого с помощью analyze compression, поэтому может возникнуть какая-то проблема, но определенно стоит попробовать, если для этого нужно инициировать SQL.