Как сохранить журналы запросов более чем за 5 дней?

В Redshift есть таблица STL_QUERY, в которой хранятся запросы, выполненные за последние 5 дней. Я пытаюсь найти способ сохранить записи более чем за 5 дней. Вот некоторые вещи, которые я рассмотрел:

  1. Есть ли для этого настройка Redshift? Казалось бы, нет.
  2. Могу ли я использовать триггер? Триггеры недоступны в Redshift, так что это невозможно.
  3. Могу ли я создать задание Amazon Data Pipeline для периодической очистки таблицы STL_QUERY? Я мог бы, так что это вариант. К сожалению, мне пришлось бы предоставить конвейеру некоторый экземпляр EC2, чтобы использовать его для выполнения этой работы. Кажется пустой тратой времени иметь экземпляр, сидящий без дела, чтобы очищать эту таблицу один раз в день.
  4. Можно ли использовать задание Amazon Simple Work Flow для очистки таблицы? Я мог бы, но он страдает теми же проблемами, что и 3.

Есть ли другие варианты/идеи, которые мне не хватает? Я бы предпочел какой-нибудь другой вариант, который не требует выделения экземпляра EC2, даже если это означает оплату дополнительной услуги (при условии, что он дешевле, чем экземпляр EC2, который я бы использовал вместо него).


person bstempi    schedule 07.11.2013    source источник


Ответы (1)


Будьте проще, делайте все это в Redshift.

Сначала используйте «СОЗДАТЬ ТАБЛИЦУ… КАК», чтобы сохранить всю текущую историю в постоянную таблицу.

CREATE TABLE admin.query_history AS SELECT * FROM stl_query;

Во-вторых, используя psql для его запуска, запланируйте задание на машине, которой вы управляете, чтобы запускать его каждый день.

INSERT INTO admin.query_history SELECT * FROM stl_query WHERE query > (SELECT MAX(query) FROM admin.query_history);

Готово. :)

Примечания:

  • Вам нужна версия 8.x psql, если вы еще не настроили ее.
  • Даже если ваша работа не будет выполняться в течение нескольких дней, stl_query хранит достаточно истории, чтобы вас охватить.
  • Согласно вашему комментарию, может быть безопаснее использовать время начала вместо запроса в качестве критерия.
person Joe Harris    schedule 08.11.2013
comment
Спасибо за ответ! Две вещи, одна: гарантируется ли увеличение поля query? Должен ли я использовать starttime вместо этого? Второе: мне не нравится идея запускать его на моем ноутбуке. Где запустить эту штуку было в центре внимания вопроса. Я оставлю это еще на один день, но если больше никто не ответит и вы уберете часть ноутбука, я приму ваш ответ. - person bstempi; 08.11.2013
comment
Хорошо, я удалил ссылку на ноутбук. Я подозреваю, что у вас есть по крайней мере 1 машина, которая работает круглосуточно и без выходных. Работа cron сделает свое дело. Вы можете посмотреть на что-то вроде AWS Data Pipeline, чтобы запускать скрипт по расписанию, но это кажется излишним для этого варианта использования. - person Joe Harris; 09.11.2013