我在哪里可以找到Redshift中的使用情况统计信息?

时间:2018-05-04 14:53:43

标签: sql amazon-redshift database-administration usage-statistics

在此之前,谢谢你的帮助!

我想知道数据库中哪些表使用最多,即查询表的用户数量,查询的次数,每个表用户消耗的资源,总时间查询的表以及任何其他有用的数据。 现在我将分析限制在9个特定表中。 我尝试使用 stl_scan pg_user 使用接下来的两个查询:

SELECT
    s.perm_table_name           AS table_name,
    count(*)                    AS qty_query,
    count(DISTINCT s.userid)    AS qty_users
FROM stl_scan s
JOIN pg_user b
    ON s.userid = b.usesysid
JOIN temp_mone_tables tmt
    ON tmt.table_id = s.tbl AND tmt.table = s.perm_table_name
WHERE s.userid > 1
GROUP BY 1
ORDER BY 1;

SELECT
    b.usename                                       AS user_name,
    count(*)                                        AS qty_scans,
    count(DISTINCT s.tbl)                           AS qty_tables,
    count(DISTINCT trunc(starttime))                AS qty_days
FROM stl_scan s
JOIN pg_user b
    ON s.userid = b.usesysid
JOIN temp_mone_tables tmt
    ON tmt.table_id = s.tbl AND tmt.table = s.perm_table_name
WHERE s.userid > 1
GROUP BY 1
ORDER BY 1;

temp_mone_tables 是一个时态表,其中包含我感兴趣的表的ID和名称。

通过这些查询,我可以获得一些信息,但我需要更多细节。令人惊讶的是,网上没有太多关于此类统计数据的数据。

再次感谢大家!

2 个答案:

答案 0 :(得分:3)

干得好!您使用stl_scan表在正确的轨道上。我不清楚你正在寻找什么进一步的细节。

有关资源使用情况的详细指标,您可能需要使用SVL_QUERY_METRICS_SUMMARY视图。请注意,此数据由query not table汇总,因为查询是资源的主要使用方式。

通常,请查看admin queries (and views) in our Redshift Utils library on GitHub,尤其是v_get_tbl_scan_frequency.sql

答案 1 :(得分:0)

感谢Joe Harris'回答,我能够在之前的查询中添加大量信息。通过 svl_query_metrics_summary 加入 stl_scan ,您可以获得有关资源消耗的重要数据,可以将这些信息扩展到Joe的答案中列出的大量视图中。< / p>

对我来说,解决方案从下一个查询开始:

SELECT *
FROM stl_scan ss
JOIN pg_user pu
    ON ss.userid = pu.usesysid
JOIN svl_query_metrics_summary sqms
    ON ss.query = sqms.query
JOIN temp_mone_tables tmt
    ON tmt.table_id = ss.tbl AND tmt.table = ss.perm_table_name

该查询为您提供了大量可以按需要以多种方式进行汇总的数据。

请记住 temp_mone_tables 是一个临时表,其中包含我感兴趣的表格的tableid和名称。