【发布时间】:2018-01-17 16:56:14
【问题描述】:
Redshift 系统表只记录了几天的记录数据 - 定期备份这些表中的行是收集和维护适当历史记录的常见做法。要查找添加到系统日志中的新行,我需要在查询(编号)或执行时间上检查我的备份表。
根据How do I keep more than 5 day's worth of query logs? 上的答案,我们可以简单地选择带有query > (select max(query) from log) 的所有行。答案是未引用的,并假设query 是按顺序插入的。
我的问题分为两部分 - 希望参考或代码作为证明 - 是
- 是
query(标识符)预计将按顺序插入,并且 - 是系统表,例如
stl_query,是不变的还是不变的?
假设我们无法验证或证明以上两者,那么备份系统表的正确策略是什么?
我对此持谨慎态度,因为我完全希望在许多其他查询开始并完成之后才能完成长时间运行的查询。
我知道query(标识符)是在查询提交时生成的,因为我可以监控正在进行的查询。因此,预计长时间运行的query=1 可能在query=2 之后完成。如果stl_query 表是不可变的,那么query=1 将被插入到query=2 之后,而max(query) 逻辑是有缺陷的。
或者,如果在运行时将query=1 插入stl_query,则必须在完成时更新行(包括结束时间、持续时间等)。这需要我对备份表进行更新插入。
【问题讨论】:
标签: amazon-web-services amazon-redshift