迁移到 SYS 监控视图 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

迁移到 SYS 监控视图

当您将 Amazon Redshift 预调配集群迁移到 Amazon Redshift Serverless 时,您的监控或诊断查询可能会引用仅在预调配集群上可用的系统视图。您可以更新查询以使用 SYS 监控视图。本页提供了预调配到 SYS 视图的映射,供您在更新查询时参考。

迁移到 SYS 监控视图的用例

从预调配集群迁移到 Amazon Redshift Serverless

如果您要将预调配集群迁移到 Amazon Redshift Serverless,则您可能具有使用以下系统视图的查询,而这些视图仅在预调配集群上可用。

要继续使用查询,请将它们重新调整为使用在 SYS 监控视图中定义的列,这些列与仅预调配视图中的列相对应。

停留在预调配集群上时更新查询

如果您不迁移到 Amazon Redshift Serverless,则可能仍需要更新现有查询。SYS 监控视图专为易于使用和降低复杂性而设计,并提供了一系列完整的指标来进行有效的监控和故障排除。使用 SYS 视图(如 SYS_QUERY_HISTORYSYS_QUERY_DETAIL),其中整合了多个仅预调配视图的信息,可以简化查询。

使用 SYS 监控视图改进查询标识符跟踪

诸如 SYS_QUERY_HISTORYSYS_QUERY_DETAIL 之类的 SYS 监控视图包含 query_id 列,该列包含用户的查询标识符。同样,诸如 STL_QUERYSVL_QLOG 之类的仅预置视图包含查询列,该列还包含查询标识符。但是,SYS 系统视图中记录的查询标识符与仅预置视图中记录的查询标识符不同。

SYS 视图的 query_id 列值与仅预置视图的查询列值之间的区别如下:

  • 在 SYS 视图中,query_id 列以原始形式记录用户提交的查询。为了提高性能,Amazon Redshift 优化器可能会将它们分解为子查询,但您运行的单个查询在 SYS_QUERY_HISTORY 中仍然只有一行。如果您想查看各个子查询,可以在 SYS_QUERY_DETAIL 中找到它们。

  • 在仅预置视图中,查询列记录子查询级别的查询。如果 Amazon Redshift 优化器将您的原始查询重写为多个子查询,则对于您运行的单个查询,STL_QUERY 中将有多行具有不同的查询标识符值。

将监控和诊断查询从仅预置视图迁移到 SYS 视图时,请考虑这种差异并相应地编辑查询。有关 Amazon Redshift 如何处理查询的更多信息,请参阅查询计划和执行工作流程

SYS_QUERY_HISTORY

以下各表中的部分或全部列也在 SYS_QUERY_HISTORY 中定义。

SYS_QUERY_DETAIL

以下各表中的部分或全部列也在 SYS_QUERY_DETAIL 中定义。

SYS_RESTORE_LOG

下表中的部分或全部列也在 SYS_RESTORE_LOG 中定义。

SYS_RESTORE_STATE

下表中的部分或全部列也在 SYS_RESTORE_STATE 中定义。

SYS_TRANSACTION_HISTORY

以下各表中的部分或全部列也在 SYS_TRANSACTION_HISTORY 中定义。

SYS_QUERY_TEXT

下表中的部分或全部列也在 SYS_QUERY_TEXT 中定义。

SYS_CONNECTION_LOG

下表中的部分或全部列也在 SYS_CONNECTION_LOG 中定义。

SYS_SESSION_HISTORY

以下各表中的部分或全部列也在 SYS_SESSION_HISTORY 中定义。

SYS_LOAD_DETAIL

下表中的部分或全部列也在 SYS_LOAD_DETAIL 中定义。

SYS_LOAD_HISTORY

下表中的部分或全部列也在 SYS_LOAD_HISTORY 中定义。

SYS_LOAD_ERROR_DETAIL

以下各表中的部分或全部列也在 SYS_LOAD_ERROR_DETAIL 中定义。

SYS_UNLOAD_HISTORY

下表中的部分或全部列也在 SYS_UNLOAD_HISTORY 中定义。

SYS_UNLOAD_DETAIL

下表中的部分或全部列也在 SYS_UNLOAD_DETAIL 中定义。

SYS_COPY_REPLACEMENTS

下表中的部分或全部列也在 SYS_COPY_REPLACEMENTS 中定义。

SYS_DATASHARE_USAGE_CONSUMER

下表中的部分或全部列也在 SYS_DATASHARE_USAGE_CONSUMER 中定义。

SYS_DATASHARE_USAGE_PRODUCER

下表中的部分或全部列也在 SYS_DATASHARE_USAGE_PRODUCER 中定义。

SYS_DATASHARE_CROSS_REGION_USAGE

下表中的部分或全部列也在 SYS_DATASHARE_CROSS_REGION_USAGE 中定义。

SYS_DATASHARE_CHANGE_LOG

下表中的部分或全部列也在 SYS_DATASHARE_CHANGE_LOG 中定义。

SYS_EXTERNAL_QUERY_DETAIL

以下各表中的部分或全部列也在 SYS_EXTERNAL_QUERY_DETAIL 中定义。

SYS_EXTERNAL_QUERY_ERROR

以下各表中的部分或全部列也在 SYS_EXTERNAL_QUERY_ERROR 中定义。

SYS_VACUUM_HISTORY

以下各表中的部分或全部列也在 SYS_VACUUM_HISTORY 中定义。

SYS_ANALYZE_HISTORY

以下各表中的部分或全部列也在 SYS_ANALYZE_HISTORY 中定义。

SYS_ANALYZE_COMPRESSION_HISTORY

以下各表中的部分或全部列也在 SYS_ANALYZE_COMPRESSION_HISTORY 中定义。

SYS_MV_REFRESH_HISTORY

以下各表中的部分或全部列也在 SYS_MV_REFRESH_HISTORY 中定义。

SYS_MV_STATE

以下各表中的部分或全部列也在 SYS_MV_STATE 中定义。

SYS_PROCEDURE_CALL

以下各表中的部分或全部列也在 SYS_PROCEDURE_CALL 中定义。

SYS_PROCEDURE_MESSAGES

以下各表中的部分或全部列也在 SYS_PROCEDURE_MESSAGES 中定义。

SYS_UDF_LOG

以下各表中的部分或全部列也在 SYS_UDF_LOG 中定义。

SYS_USERLOG

以下各表中的部分或全部列也在 SYS_USERLOG 中定义。

SYS_SCHEMA_QUOTA_VIOLATIONS

以下各表中的部分或全部列也在 SYS_SCHEMA_QUOTA_VIOLATIONS 中定义。

SYS_SPATIAL_SIMPLIFY

以下各表中的部分或全部列也在 SYS_SPATIAL_SIMPLIFY 中定义。

示例

显示 Amazon Redshift 在仅预置视图和 SYS 监控视图中如何以不同的方式记录查询

请参阅以下示例查询。这是按照在 Amazon Redshift 中运行的方式编写的查询。

SELECT s_name , COUNT(*) AS numwait FROM supplier, lineitem l1, orders, nation WHERE s_suppkey = l1.l_suppkey AND o_orderkey = l1.l_orderkey AND o_orderstatus = 'F' AND l1.l_receiptdate > l1.l_commitdate AND EXISTS (SELECT * FROM lineitem l2 WHERE l2.l_orderkey = l1.l_orderkey AND l2.l_suppkey <> l1.l_suppkey ) AND NOT EXISTS (SELECT * FROM lineitem l3 WHERE l3.l_orderkey = l1.l_orderkey AND l3.l_suppkey <> l1.l_suppkey AND l3.l_receiptdate > l3.l_commitdate ) AND s_nationkey = n_nationkey AND n_name = 'UNITED STATES' GROUP BY s_name ORDER BY numwait DESC , s_name LIMIT 100;

在后台,Amazon Redshift 查询优化器将上述用户提交的查询重写为 5 个子查询。

第一个子查询创建一个临时表来实现一个子查询。

CREATE TEMP TABLE volt_tt_606590308b512(l_orderkey , l_suppkey , s_name ) AS SELECT l1.l_orderkey , l1.l_suppkey , public.supplier.s_name FROM public.lineitem AS l1, public.nation, public.orders, public.supplier WHERE l1.l_commitdate < l1.l_receiptdate AND l1.l_orderkey = public.orders.o_orderkey AND l1.l_suppkey = public.supplier.s_suppkey AND public.nation.n_name = 'UNITED STATES'::CHAR(8) AND public.nation.n_nationkey = public.supplier.s_nationkey AND public.orders.o_orderstatus = 'F'::CHAR(1);

第二个子查询从临时表中收集统计数据。

padb_fetch_sample: select count(*) from volt_tt_606590308b512;

第三个子查询创建另一个临时表来实现另一个子查询,引用上面创建的临时表。

CREATE TEMP TABLE volt_tt_606590308c2ef(l_orderkey , l_suppkey) AS (SELECT volt_tt_606590308b512.l_orderkey , volt_tt_606590308b512.l_suppkey FROM public.lineitem AS l2, volt_tt_606590308b512 WHERE l2.l_suppkey <> volt_tt_606590308b512.l_suppkey AND l2.l_orderkey = volt_tt_606590308b512.l_orderkey) EXCEPT distinct (SELECT volt_tt_606590308b512.l_orderkey, volt_tt_606590308b512.l_suppkey FROM public.lineitem AS l3, volt_tt_606590308b512 WHERE l3.l_commitdate < l3.l_receiptdate AND l3.l_suppkey <> volt_tt_606590308b512.l_suppkey AND l3.l_orderkey = volt_tt_606590308b512.l_orderkey);

第四个子查询再次收集临时表的统计数据。

padb_fetch_sample: select count(*) from volt_tt_606590308c2ef

最后一个子查询使用上面创建的临时表生成输出。

SELECT volt_tt_606590308b512.s_name AS s_name , COUNT(*) AS numwait FROM volt_tt_606590308b512, volt_tt_606590308c2ef WHERE volt_tt_606590308b512.l_orderkey = volt_tt_606590308c2ef.l_orderkey AND volt_tt_606590308b512.l_suppkey = volt_tt_606590308c2ef.l_suppkey GROUP BY 1 ORDER BY 2 DESC , 1 ASC LIMIT 100;

在仅预置系统视图 STL_QUERY 中,Amazon Redshift 在子查询级别记录了五行,如下所示:

SELECT userid, xid, pid, query, querytxt::varchar(100); FROM stl_query WHERE xid = 48237350 ORDER BY xid, starttime; userid | xid | pid | query | querytxt --------+----------+------------+----------+------------------------------------------------------------------------------------------------------ 101 | 48237350 | 1073840810 | 12058151 | CREATE TEMP TABLE volt_tt_606590308b512(l_orderkey, l_suppkey, s_name) AS SELECT l1.l_orderkey, l1.l 101 | 48237350 | 1073840810 | 12058152 | padb_fetch_sample: select count(*) from volt_tt_606590308b512 101 | 48237350 | 1073840810 | 12058156 | CREATE TEMP TABLE volt_tt_606590308c2ef(l_orderkey, l_suppkey) AS (SELECT volt_tt_606590308b512.l_or 101 | 48237350 | 1073840810 | 12058168 | padb_fetch_sample: select count(*) from volt_tt_606590308c2ef 101 | 48237350 | 1073840810 | 12058170 | SELECT s_name , COUNT(*) AS numwait FROM supplier, lineitem l1, orders, nation WHERE s_suppkey = l1. (5 rows)

在 SYS 监控视图 SYS_QUERY_HISTORY 中,Amazon Redshift 按如下方式记录查询:

SELECT user_id, transaction_id, session_id, query_id, query_text::varchar(100) FROM sys_query_history WHERE transaction_id = 48237350 ORDER BY start_time; user_id | transaction_id | session_id | query_id | query_text ---------+----------------+------------+----------+------------------------------------------------------------------------------------------------------ 101 | 48237350 | 1073840810 | 12058149 | SELECT s_name , COUNT(*) AS numwait FROM supplier, lineitem l1, orders, nation WHERE s_suppkey = l1.

在 SYS_QUERY_DETAIL 中,可以使用来自 SYS_QUERY_HISTORY 的 query_id 值查找子查询级详细信息。child_query_sequence 列显示子查询的执行顺序。有关 SYS_QUERY_DETAIL 中各列的更多信息,请参阅 SYS_QUERY_DETAIL

select user_id, query_id, child_query_sequence, stream_id, segment_id, step_id, start_time, end_time, duration, blocks_read, blocks_write, local_read_io, remote_read_io, data_skewness, time_skewness, is_active, spilled_block_local_disk, spilled_block_remote_disk from sys_query_detail where query_id = 12058149 and step_id = -1 order by query_id, child_query_sequence, stream_id, segment_id, step_id; user_id | query_id | child_query_sequence | stream_id | segment_id | step_id | start_time | end_time | duration | blocks_read | blocks_write | local_read_io | remote_read_io | data_skewness | time_skewness | is_active | spilled_block_local_disk | spilled_block_remote_disk ---------+----------+----------------------+-----------+------------+---------+----------------------------+----------------------------+----------+-------------+--------------+---------------+----------------+---------------+---------------+-----------+--------------------------+--------------------------- 101 | 12058149 | 1 | 0 | 0 | -1 | 2023-09-27 15:40:38.512415 | 2023-09-27 15:40:38.533333 | 20918 | 0 | 0 | 0 | 0 | 0 | 44 | f | 0 | 0 101 | 12058149 | 1 | 1 | 1 | -1 | 2023-09-27 15:40:39.931437 | 2023-09-27 15:40:39.972826 | 41389 | 12 | 0 | 12 | 0 | 0 | 77 | f | 0 | 0 101 | 12058149 | 1 | 2 | 2 | -1 | 2023-09-27 15:40:40.584412 | 2023-09-27 15:40:40.613982 | 29570 | 32 | 0 | 32 | 0 | 0 | 25 | f | 0 | 0 101 | 12058149 | 1 | 2 | 3 | -1 | 2023-09-27 15:40:40.582038 | 2023-09-27 15:40:40.615758 | 33720 | 0 | 0 | 0 | 0 | 0 | 1 | f | 0 | 0 101 | 12058149 | 1 | 3 | 4 | -1 | 2023-09-27 15:40:46.668766 | 2023-09-27 15:40:46.705456 | 36690 | 24 | 0 | 15 | 0 | 0 | 17 | f | 0 | 0 101 | 12058149 | 1 | 4 | 5 | -1 | 2023-09-27 15:40:46.707209 | 2023-09-27 15:40:46.709176 | 1967 | 0 | 0 | 0 | 0 | 0 | 18 | f | 0 | 0 101 | 12058149 | 1 | 4 | 6 | -1 | 2023-09-27 15:40:46.70656 | 2023-09-27 15:40:46.71289 | 6330 | 0 | 0 | 0 | 0 | 0 | 0 | f | 0 | 0 101 | 12058149 | 1 | 5 | 7 | -1 | 2023-09-27 15:40:46.71405 | 2023-09-27 15:40:46.714343 | 293 | 0 | 0 | 0 | 0 | 0 | 0 | f | 0 | 0 101 | 12058149 | 2 | 0 | 0 | -1 | 2023-09-27 15:40:52.083907 | 2023-09-27 15:40:52.087854 | 3947 | 0 | 0 | 0 | 0 | 0 | 35 | f | 0 | 0 101 | 12058149 | 2 | 1 | 1 | -1 | 2023-09-27 15:40:52.089632 | 2023-09-27 15:40:52.091129 | 1497 | 0 | 0 | 0 | 0 | 0 | 11 | f | 0 | 0 101 | 12058149 | 2 | 1 | 2 | -1 | 2023-09-27 15:40:52.089008 | 2023-09-27 15:40:52.091306 | 2298 | 0 | 0 | 0 | 0 | 0 | 0 | f | 0 | 0 101 | 12058149 | 3 | 0 | 0 | -1 | 2023-09-27 15:40:56.882013 | 2023-09-27 15:40:56.897282 | 15269 | 0 | 0 | 0 | 0 | 0 | 29 | f | 0 | 0 101 | 12058149 | 3 | 1 | 1 | -1 | 2023-09-27 15:40:59.718554 | 2023-09-27 15:40:59.722789 | 4235 | 0 | 0 | 0 | 0 | 0 | 13 | f | 0 | 0 101 | 12058149 | 3 | 2 | 2 | -1 | 2023-09-27 15:40:59.800382 | 2023-09-27 15:40:59.807388 | 7006 | 0 | 0 | 0 | 0 | 0 | 58 | f | 0 | 0 101 | 12058149 | 3 | 3 | 3 | -1 | 2023-09-27 15:41:06.488685 | 2023-09-27 15:41:06.493825 | 5140 | 0 | 0 | 0 | 0 | 0 | 56 | f | 0 | 0 101 | 12058149 | 3 | 3 | 4 | -1 | 2023-09-27 15:41:06.486206 | 2023-09-27 15:41:06.497756 | 11550 | 0 | 0 | 0 | 0 | 0 | 2 | f | 0 | 0 101 | 12058149 | 3 | 4 | 5 | -1 | 2023-09-27 15:41:06.499201 | 2023-09-27 15:41:06.500851 | 1650 | 0 | 0 | 0 | 0 | 0 | 15 | f | 0 | 0 101 | 12058149 | 3 | 4 | 6 | -1 | 2023-09-27 15:41:06.498609 | 2023-09-27 15:41:06.500949 | 2340 | 0 | 0 | 0 | 0 | 0 | 0 | f | 0 | 0 101 | 12058149 | 3 | 5 | 7 | -1 | 2023-09-27 15:41:06.502945 | 2023-09-27 15:41:06.503282 | 337 | 0 | 0 | 0 | 0 | 0 | 0 | f | 0 | 0 101 | 12058149 | 4 | 0 | 0 | -1 | 2023-09-27 15:41:06.62899 | 2023-09-27 15:41:06.631452 | 2462 | 0 | 0 | 0 | 0 | 0 | 22 | f | 0 | 0 101 | 12058149 | 4 | 1 | 1 | -1 | 2023-09-27 15:41:06.632313 | 2023-09-27 15:41:06.63391 | 1597 | 0 | 0 | 0 | 0 | 0 | 20 | f | 0 | 0 101 | 12058149 | 4 | 1 | 2 | -1 | 2023-09-27 15:41:06.631726 | 2023-09-27 15:41:06.633813 | 2087 | 0 | 0 | 0 | 0 | 0 | 0 | f | 0 | 0 101 | 12058149 | 5 | 0 | 0 | -1 | 2023-09-27 15:41:12.571974 | 2023-09-27 15:41:12.584234 | 12260 | 0 | 0 | 0 | 0 | 0 | 39 | f | 0 | 0 101 | 12058149 | 5 | 0 | 1 | -1 | 2023-09-27 15:41:12.569815 | 2023-09-27 15:41:12.585391 | 15576 | 0 | 0 | 0 | 0 | 0 | 4 | f | 0 | 0 101 | 12058149 | 5 | 1 | 2 | -1 | 2023-09-27 15:41:13.758513 | 2023-09-27 15:41:13.76401 | 5497 | 0 | 0 | 0 | 0 | 0 | 39 | f | 0 | 0 101 | 12058149 | 5 | 1 | 3 | -1 | 2023-09-27 15:41:13.749 | 2023-09-27 15:41:13.772987 | 23987 | 0 | 0 | 0 | 0 | 0 | 32 | f | 0 | 0 101 | 12058149 | 5 | 2 | 4 | -1 | 2023-09-27 15:41:13.799526 | 2023-09-27 15:41:13.813506 | 13980 | 0 | 0 | 0 | 0 | 0 | 62 | f | 0 | 0 101 | 12058149 | 5 | 2 | 5 | -1 | 2023-09-27 15:41:13.798823 | 2023-09-27 15:41:13.813651 | 14828 | 0 | 0 | 0 | 0 | 0 | 0 | f | 0 | 0 (28 rows)