Skip to content

Информация о метриках

В этом документе описаны данные собираемые и передаваемые для анализа запросов выполняющихся на базе Greenplum Данные передаются с помощью протокола gRPC. Протокол общения можно посмотреть в подпроекте protos.

Общие сведения

Схематично выполнение запроса в базе Greenplum можно изобразить следующим образом:
scheme executing sql

Greenplum предоставляет возможность встраивания кода на разных этапах выполнения запроса и обработки необходимых данных с помощью так называемых хуков.

Бибилотека использует слдиющий список хуков - ExecutorStart_hook - ExecutorRun_hook - ExecutorEnd_hook - ExecutorFinish_hook - query_info_collect_hook

Именно в эти моменты собираются статистические данные по выполняемому запросу и отправляются на сервер.

Список метрик


Заголовок

Общая информация идентифицирующая запрос, передается в каждом пакете с метриками.

QueryInfoHeader

Атрибут Тип Описание
datetime timestamp Локальное время на сегменте выполняющим часть запроса
pid int32 Process ID - идентификатор процесса
gpIdentity GpId Данные о базе данных (см. ниже)
tmid int32 Идентификатор транзакции
ssid int32 Идентификатор сессии
ccnt int32 Номер команды в сессии

GpId

Атрибут Тип Описание
dbid int32 Идентификатор базы данных на сегменте
segindex int32 Идентификатор сегмента
gp_role GpRoleValue Роль greenplum, в которой была запущена база
gp_session_role GpRoleValue Роль greenplum в текущей сессии

GpRoleValue

  • GP_ROLE_UTILITY
  • GP_ROLE_DISPATCH
  • GP_ROLE_EXECUTE

Информация о текущем запросе и сессии

SessionInfo

Атрибут Тип Описание
sql string Текст выполняемого запроса
userName string Имя пользователя, запустившего запрос
databaseName string Имя базы данных, в которой запущен запрос
resourceGroup string Текущее имя ресурсной группы. Может изменятся в ходе выполнения запроса
applicationName string Название приложения вызвавшего запрос
params repeated KeyValuePair Список предопределенных параметров, значение которых отправляется в начале выполнения запроса. Список параметров задается настройкой metric.user_params

Информация о процессе выполняющем запрос

Для каждого процесса выполняющего часть запроса собирается системная статистика использования процессор, памяти, дисков.

Данные по использованию процесора

CpuStat

Атрибут Тип Описание
runningTimeSeconds double Общее время с момента запуска процесса в секундах
userTimeSeconds double Время работы в пользовательском пространстве в секундах
kernelTimeSeconds double Время работы на уровне ядра в секундах

Данные по использованию памяти

MemoryStat

Атрибут Тип Описание
vsize uint64 Размер виртуальной памяти в байтах
rss uint64 Число страниц выделенных процессом в реальной памяти
VmSizeKb uint64 Размер виртуальной памяти в Кб (данные из /proc/[pid]/status)
VmPeakKb uint64 Максимальный размер виртуальной памяти в Кб (данные из /proc/[pid]/status)

Данные по работе с дисками

StorageStat

Атрибут Тип Описание
rchar uint64 Число символов, запрошенных для чтения приложением
wchar uint64 Число символов, запрошенных для записи приложением
syscr uint64 Число операций чтения
syscw uint64 Число операций записи
read_bytes uint64 Примерное число байт, которое было реально прочитано с диска
write_bytes uint64 Примерное число байт, которое было реально записано на диск
cancelled_write_bytes uint64 Число байт, запись которых была отменена

План запроса

На старте выполнения запроса шлется план выполнения и используемый генератор. План запроса собирается и отправляется двумя способами: в виде привычного текстового вывода команды explain и в виде дерева.

Для каждого шага выполнения запрос шлется статистика о предпологаемой стоимости шага, а в конце запроса о реально затраченых ресурсах.

MetricPlan

Атрибут Тип Описание
type GpdbNodeType Тип шага. Список допустимых вариантов в GpdbNodeType.proto
plan_node_id int32 Уникальный идентификатор шага запроса
parent_plan_node_id int32 Идентификатор родителя. Для корня - 0
startup_cost double Расчетное время затраченное до начала вывода данных
total_cost double Расчетное время выдачи всех данных, считая что выполнится до конца
plan_rows double Расчетное число строк, считая что выполнится до конца
plan_width int32 Расчетное средняя ширина строки в байтах
motionInfo MetricMotionInfo Дополнительная информация о motion node
relationInfo MetricRelationInfo Информация об участвующем в операции объеке
scanIndexName string Для скан нод имя индекса
scanDirection ScanDirection Для скан нод направление сканирование
sliceInfo MetricSliceInfo Информация о slice текущего шага
statement string В зависимости от типа шага информация о фильтрах ввиде JSON объекта сериализованного в строку

MetricInstrumentation - Реальная статистика выполнения запроса

Атрибут Тип Описание
ntuples uint64 Общее число произведенных строк
nloops uint64 Число циклов при выполнении этого шага
tuplecount uint64 Число строк в текущем цикле
firsttuple double Время затраченое на получение первой строчки в этом цикле
startup double Время затраченное до начала вывода данных
total double Общее время выдачи данных