我在哪里可以找到 Redshift 中的使用统计信息?
Where can I find usage statistics in Redshift?
首先感谢您的帮助!
我想找出数据库中哪些 table 使用最频繁,即查询 table 的用户数量、查询次数、查询的资源用户每 table 消耗的位置、查询的总时间 table 以及任何其他有用数据。
现在我将分析限制在 9 个特定的 tables。
我尝试使用 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 是一个时间 table,其中包含我感兴趣的 table 的 ID 和名称。
通过此查询,我可以获得一些信息,但我需要更多详细信息。令人惊讶的是,关于这种统计数据的在线数据并不多。
再次感谢大家!
干得好!使用 stl_scan
table,您走在正确的轨道上。我不清楚您要查找的更多详细信息。
有关资源使用情况的详细指标,您可能需要使用 SVL_QUERY_METRICS_SUMMARY
视图。请注意,此数据是按查询而非 table 汇总的,因为查询是利用资源的主要方式。
一般来说,看看admin queries (and views) in our Redshift Utils library on GitHub, particularly v_get_tbl_scan_frequency.sql
感谢 Joe Harris' 的回答,我能够为我之前的查询添加大量信息。通过将 svl_query_metrics_summary 加入到 stl_scan 中,您可以获得有关资源消耗的重要数据,可以将这些信息扩展到乔的回答中列出了大量的观点。
对我来说,解决方案从下一个查询开始:
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 是一个临时 table,其中包含 tableid 和 tables 我的名称有兴趣。
首先感谢您的帮助!
我想找出数据库中哪些 table 使用最频繁,即查询 table 的用户数量、查询次数、查询的资源用户每 table 消耗的位置、查询的总时间 table 以及任何其他有用数据。 现在我将分析限制在 9 个特定的 tables。 我尝试使用 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 是一个时间 table,其中包含我感兴趣的 table 的 ID 和名称。
通过此查询,我可以获得一些信息,但我需要更多详细信息。令人惊讶的是,关于这种统计数据的在线数据并不多。
再次感谢大家!
干得好!使用 stl_scan
table,您走在正确的轨道上。我不清楚您要查找的更多详细信息。
有关资源使用情况的详细指标,您可能需要使用 SVL_QUERY_METRICS_SUMMARY
视图。请注意,此数据是按查询而非 table 汇总的,因为查询是利用资源的主要方式。
一般来说,看看admin queries (and views) in our Redshift Utils library on GitHub, particularly v_get_tbl_scan_frequency.sql
感谢 Joe Harris' 的回答,我能够为我之前的查询添加大量信息。通过将 svl_query_metrics_summary 加入到 stl_scan 中,您可以获得有关资源消耗的重要数据,可以将这些信息扩展到乔的回答中列出了大量的观点。
对我来说,解决方案从下一个查询开始:
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 是一个临时 table,其中包含 tableid 和 tables 我的名称有兴趣。