如何保留超过5天的查询日志?

时间:2013-11-07 19:20:18

标签: amazon-web-services amazon-redshift

在Redshift中,有一个STL_QUERY表,用于存储过去5天内运行的查询。我正试图找到一种方法来保存超过5天的记录。以下是我考虑过的一些事情:

  1. 这是否有Redshift设置?它看起来不会。
  2. 我可以使用触发器吗? Redshift中没有触发器,所以这是禁止的。
  3. 我可以创建一个Amazon Data Pipeline作业来定期“刮”STL_QUERY表吗?我可以,所以这是一个选择。不幸的是,我必须给管道一些EC2实例来运行这项工作。每天有一个实例坐在这张桌子上,这似乎是一种浪费。
  4. 我可以使用亚马逊简单工作流程裁员刮桌子吗?我可以,但它遇到与3相同的问题。
  5. 我还缺少其他选择/想法吗?我更喜欢其他一些不涉及我专用EC2实例的选项,即使这意味着要支付额外的服务(假设它比我在其中使用的EC2实例更便宜)。

1 个答案:

答案 0 :(得分:1)

保持简单,在Redshift中完成所有操作。

首先,使用“CREATE TABLE ... AS”将所有当前历史记录保存到永久表中。

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);

完成。 :)

注意:

  • 如果您尚未设置此版本,则需要psql的8.x版本。
  • 即使你的工作没有运行几天,stl_query也会保留足够的历史记录,你将会被覆盖。
  • 根据您的评论,使用starttime而不是查询作为标准可能更安全。