Amazon web services 如何保持5天以上';有多少查询日志?

Amazon web services 如何保持5天以上';有多少查询日志?,amazon-web-services,amazon-redshift,Amazon Web Services,Amazon Redshift,在Redshift中,有一个STL_QUERY表存储过去5天内运行的查询。我正试图找到一种方法来保存超过5天的记录。以下是我考虑过的一些事情: 有红移设置吗?看来不会 我可以用扳机吗?触发器在红移中不可用,因此这是不允许的 我可以创建一个Amazon数据管道作业来定期“刮取”STL\U查询表吗?我可以,所以这是一个选择。不幸的是,我必须给管道一些EC2实例来运行这项工作。每天有一个实例坐在旁边刮桌子,这似乎是一种浪费 我可以用一个简单的亚马逊工作流程来刮桌子吗?我可以,但它和3有着同样的问题 我

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

  • 有红移设置吗?看来不会
  • 我可以用扳机吗?触发器在红移中不可用,因此这是不允许的
  • 我可以创建一个Amazon数据管道作业来定期“刮取”STL\U查询表吗?我可以,所以这是一个选择。不幸的是,我必须给管道一些EC2实例来运行这项工作。每天有一个实例坐在旁边刮桌子,这似乎是一种浪费
  • 我可以用一个简单的亚马逊工作流程来刮桌子吗?我可以,但它和3有着同样的问题

  • 我还缺少其他选择/想法吗?我更喜欢其他一些不需要我专门使用EC2实例的选项,即使这意味着要支付额外的服务费用(前提是它比我使用的EC2实例便宜)。

    保持简单,用红移键完成所有操作

    首先,使用“createtable…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);
    
    完成。:)

    注:

    • 如果尚未设置,则需要8.x版本的
      psql
    • 即使您的作业在几天内没有运行,stl\U查询也会保存足够的历史记录,以供您查看
    • 根据您的评论,使用starttime而不是query作为条件可能更安全

    谢谢你的回答!两件事,一件:
    query
    字段是否保证递增?我应该改用
    starttime
    ?第二:我不喜欢让它在我的笔记本电脑上运行。问题的焦点是把这个东西放在哪里。我会让它继续一天,但如果没有其他人回答,而你删除了“笔记本电脑”部分,我会接受你的回答。好的,我删除了对笔记本电脑的引用。我怀疑您控制的机器中至少有一台是全天候运行的。一个cron作业就可以了。您可以查看类似于AWS数据管道的内容,以便按计划运行脚本,但对于这个用例来说,这似乎有些过分。