Где я могу найти статистику использования в Redshift? - PullRequest
0 голосов
/ 04 мая 2018

Прежде всего спасибо за помощь!

Я хочу выяснить, какие таблицы в базе данных используются наиболее интенсивно, т. Е. Количество пользователей, запрашивающих таблицу, количество запросов к ней, ресурсы, которые были использованы пользователями для каждой таблицы, общее время таблицы, где запрашиваются, и любые другие полезные данные. А пока я бы ограничил анализ 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 - это временная таблица, которая содержит идентификатор и имя интересующих меня таблиц.

С помощью этих запросов я могу получить некоторую информацию, но мне нужно больше деталей. Удивительно, но в Интернете не так много данных об этой статистике.

Еще раз спасибо всем заранее!

Ответы [ 2 ]

0 голосов
/ 07 мая 2018

Благодаря ответу Джо Харриса я смог добавить много информации к моему предыдущему запросу. С 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 - это временная таблица, содержащая tableid и имя интересующих меня таблиц.

0 голосов
/ 04 мая 2018

Отличная работа! Вы находитесь на правильном пути, используя таблицу stl_scan. Мне не ясно, какие дополнительные детали вы ищете.

Для получения подробных показателей использования ресурсов вы можете использовать представление SVL_QUERY_METRICS_SUMMARY. Обратите внимание, что эти данные суммируются по запросу, а не по таблице, поскольку запрос является основным способом использования ресурсов.

В общем, посмотрите на административные запросы (и представления) в нашей библиотеке Redshift Utils на GitHub , в частности v_get_tbl_scan_frequency.sql

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...