并从 stl_querytext 获取全文
如何连接这 2 个表,因为这 2 个表中的 queryid 不同
我正在使用 sys_query_history.transaction_id= stl_querytext.xid 和 sys_query_history.session_id= stl_querytext.pid
但它不起作用,因为用户可以在同一会话中执行超过 1 个查询 在这种情况下,sys_query_history 中的 query_id 与 stl_querytext 中的查询不同
你应该添加-
AND sys_query_history.query_id= stl_querytext.query
您的 JOIN ON 子句。
交易 ID 是关联两者的正确方法。这就是
Redshift 文档中演示的内容。
如果您对历史关联 SYS/STL 表不感兴趣,您可以调用last_user_query_id()
和
pg_last_query_id()
分别获取最新的父查询 id 和子查询 id。这不会捕获一对多关系,因为您只是获取最后重写查询的 id。对于 COPY/加载查询,您还可以使用
pg_last_copy_id()
,它可以让您将上次执行的 COPY 与其父用户查询相关联。由于它是一对多的,所以实际上没有单一的方法来连接表。最有可能的是,您可能希望在加入 SYS 之前聚合 STL 中的所有行。或者您可能想要挑选并找到子项的单个 STL 查询。某些表仅包含某些查询类型的条目,因此在加入之前可能不需要聚合/选择(例如 STL_LOAD_ERRORS 和 SYS_LOAD_ERROR_DETAIL)