6.4. Представления

6.4.1. Глобальные представления

В Shardman есть ряд глобальных представлений, основанных на локальных представлениях PostgreSQL. Определение столбцов глобального представления совпадает с их определением в соответствующем локальном представлении. Глобальное представление показывает объединение результатов выборки из соответствующих локальных представлений. Строки возвращаются из каждого узла кластера. В глобальных представлениях в столбце rgid выводятся идентификаторы группы репликации узла, из которого взяты строки.

Ниже представлен список глобальных представлений со ссылками на соответствующие локальные представления:

Таблица 6.2. Глобальные и локальные представления

Глобальное представлениеЛокальное представлениеОписание
shardman.gv_stat_activitypg_stat_activityПо одной строке для каждого серверного процесса с информацией, относящейся к текущей деятельности этого процесса.
shardman.gv_stat_progress_vacuumpg_stat_progress_vacuumВ процессе выполнения VACUUM представление pg_stat_progress_vacuum будет содержать по одной строке для каждого обслуживающего процесса (включая рабочие процессы автоочистки), производящего очистку в данный момент.
shardman.gv_stat_replicationpg_stat_replicationПо одной строке для каждого процесса-передатчика WAL со статистикой по репликации на ведомом сервере, к которому подключён этот процесс.
shardman.gv_stat_replication_slotspg_stat_replication_slotsПо одной строке со статистикой по использованию слота репликации для каждого такого слота.
shardman.gv_stat_subscriptionpg_stat_subscriptionПо одной строке для подписки для основного рабочего процесса (с NULL в PID, если процесс не работает) и дополнительные строки для рабочих процессов, осуществляющих копирование начальных данных для таблиц в подписке.
shardman.gv_stat_sslpg_stat_sslПо одной строке для каждого обслуживающего процесса и процесса, передающего WAL, которые показывают статистику использования SSL для подключений.
shardman.gv_stat_gssapipg_stat_gssapiПо одной строке для каждого обслуживающего процесса с информацией об использовании GSSAPI для конкретного подключения.
shardman.gv_stat_archiverpg_stat_archiverТолько одна строка со статистикой работы процесса архивации WAL.
shardman.gv_stat_bgwriterpg_stat_bgwriterТолько одна строка со статистикой работы фонового процесса записи.
shardman.gv_stat_walpg_stat_walТолько одна строка со статистикой работы WAL.
shardman.gv_stat_databasepg_stat_databaseПо одной строке на каждую базу данных со статистикой по отменам запросов, выполненным вследствие конфликта с процессами восстановления на ведомых серверах.
shardman.gv_stat_database_conflictspg_stat_database_conflictsПо одной строке на каждую базу данных со статистикой по отменам запросов, выполненным вследствие конфликтов с процессами восстановления на ведомых серверах. Данное представление содержит информацию только о ведомых серверах, поскольку на ведущих серверах конфликты не происходят.
shardman.gv_stat_all_tablespg_stat_all_tablesПо одной строке на каждую таблицу в текущей базе данных со статистикой по обращениям к этой таблице.
shardman.gv_stat_all_indexespg_stat_all_indexesПо одной строке для каждого индекса в текущей базе данных со статистикой по обращениям к этому индексу.
shardman.gv_statio_all_tablespg_statio_all_tablesПо одной строке для каждой таблицы в текущей базе данных со статистикой по операциям ввода/вывода с этой таблицей.
shardman.gv_statio_all_indexespg_statio_all_indexesПо одной строке для каждого индекса в текущей базе данных со статистикой по операциям ввода/вывода для этого индекса.
shardman.gv_statio_all_sequencespg_statio_all_sequencesПо одной строке для каждой последовательности в текущей базе данных со статистикой по операциям ввода/вывода с этой последовательностью.
shardman.gv_stat_user_functionspg_stat_user_functionsПо одной строке для каждой отслеживаемой функции со статистикой по выполнениям этой функции.
shardman.gv_stat_slrupg_stat_slruПо одной строке со статистикой работы для каждого SLRU-кеша.
shardman.gv_lockspg_locksДанное представление даёт доступ к информации о блокировках, удерживаемых активными процессами на сервере баз данных.
shardman.gv_shmem_allocationspg_shmem_allocationsВ представлении показываются блоки памяти, выделенные в основном сегменте общей памяти сервера.
shardman.gv_backend_memory_contextspg_backend_memory_contextsВ представлении показываются все контексты памяти серверного процесса, обслуживающего текущий сеанс.
shardman.gv_stat_csnshardman.pg_stat_csnОдна строка, показывающая статистику задержек, возникающих во время импорта снимков CSN.
shardman.gv_stat_monitorshardman.pg_stat_monitorОдна строка, показывающая метрики Shardman monitor.
shardman.gv_stat_netusageshardman.pg_stat_net_usageОдна строка, показывающая совокупный сетевой трафик между узлами кластера Shardman.
shardman.gv_stat_xact_timeshardman.pg_stat_xact_timeОдна строка со статистикой о затраченном на транзакцию времени.
shardman.gv_silk_routesshardman.silk_routesВ данном представлении отображается снимок актуального состояния таблицы маршрутов мультиплексора.
shardman.gv_silk_connectsshardman.silk_connectsВ данном представлении отображается список текущих соединений мультиплексора.
shardman.gv_silk_backendsshardman.silk_backendsВ данном представлении отображается список текущих процессов двух типов: обслуживающие процессы для клиентских соединений и рабочие процессы silkworm мультиплексора, которые с ним взаимодействуют.
shardman.gv_silk_pending_jobsshardman.silk_pending_jobsВ данном представлении отображается список текущих маршрутов в очереди заданий мультиплексора, которые ещё не назначены рабочим процессам.
shardman.gv_silk_routingshardman.silk_routingПоказывает результат работы функции shardman.silk_routing.
shardman.gv_stats_sdm_statementspgpro_stats_sdm_statementsДанное представление даёт доступ к агрегированной статистике распределённых запросов. Его можно создать только в базе данных, где Shardman установлен раньше, чем pgpro_stats. Чтобы это глобальное представление работало, необходимо, чтобы pgpro_stats был создан на всех узлах кластера.
shardman.gv_lock_graphshardman.lock_graphЭто представление отображает граф блокировок между процессами на узлах кластера Shardman, включая внешние блокировки. Оно основано на системных представлениях pg_locks и pg_prepared_xacts, а также на представлении pg_stat_activity сборщика статистики.
shardman.gv_stat_foreign_bytesshardman.pg_stat_foreign_stat_bytesЭто представление показывает объём статистики для сторонних отношений, передаваемый по сети между узлами кластера Shardman.

6.4.2. shardman.pg_stat_csn

В представлении shardman.pg_stat_csn содержится одна строка, показывающая статистику задержек, возникающих во время импорта снимков CSN. Эти задержки возникают из-за того, что системные часы на узлах кластера Shardman могут быть не синхронизированы. Задержки негативно влияют на производительность, увеличивая задержку запросов. Представление shardman.pg_stat_csn позволяет отслеживать эти задержки. Представление основано на данных Сборщика статистики. Столбцы представления показаны в Таблица 6.3.

Таблица 6.3. Столбцы shardman.pg_stat_csn

NameТипОписание
csn_snapshots_importedbigintОбщее количество импортированных снимков CSN
csn_total_import_delayintervalСуммарная продолжительность всех задержек при импорте снимков CSN, в микросекундах
csn_max_shiftbigintМаксимальное зарегистрированное смещение CSN снимка, вызвавшее задержку
local_oldest_csnbigintCSN старейшей транзакции на текущем узле
local_oldest_xidxidXID старейшей транзакции на текущем узле
indoubt_threshold_incidentsbigintОбщее количество транзакций, превысивших 10-секундный порог нахождения в состоянии inDoubt.
CSNXidMap_head_csnbigintПоследний CSN в CSNSnapshotXidMap
CSNXidMap_head_xidxidXID, соответствующий последнему CSN в CSNSnapshotXidMap
CSNXidMap_tail_csnbigintСтарейший CSN в CSNSnapshotXidMap
CSNXidMap_tail_xidxidXID, соответствующий старейшему CSN в CSNSnapshotXidMap
stats_resettimestamp with time zoneПоследнее время сброса этих статистических данных
CSNXidMap_last_trimtimestamp with time zoneПоказывает время последнего вызова функции shardman.trim_csnxid_map().

Чтобы сбросить статистику, связанную с CSN, вызовите функцию pg_stat_reset_shared с единственным текстовым аргументом, равным csn.

Примечание

Функциональность Shardman, связанная со снимками CSN, находится в стадии разработки. Поэтому в будущих выпусках ожидаются изменения в соответствующих представлениях.

6.4.3. shardman.pg_stat_xact_time

В представлении shardman.pg_stat_xact_time отображается статистика о затраченном на транзакцию времени. Столбцы представления приведены в разделе Таблица 6.4.

Таблица 6.4. Столбцы shardman.pg_stat_xact_time

NameТипОписание
overall_committed_xact_timebigintОбщее время, затраченное на зафиксиированные транзакции
overall_aborted_xact_timebigintОбщее время, затраченное на прерванные транзакции
overall_commit_timebigintОбщее время, затраченное на фиксирование транзакций
local_commit_timebigintОбщее время, затраченное на запись в WAL для всех зафиксированных транзакций
global_commit_timebigintОбщее время, затраченное на отправку распределёнными запросами сообщений о статусах транзакций для всех зафиксированных транзакций
overall_abort_timebigintОбщее время, затраченное на прерывание транзакций
local_abort_timebigintОбщее время, затраченное на запись в WAL для всех прерванных транзакций
global_abort_timebigintОбщее время, затраченное распределёнными запросами на отправку сообщений о статусах транзакций для всех прерванных транзакций
stats_resettimestamp with time zoneПоследнее время сброса этих статистических данных

6.4.4. shardman.oldest_csn

В представлении shardman.oldest_csn содержится одна строка, показывающая csn кортежа, xid и rgid с CSN и XID самой старой транзакции в кластере, а также номер группы репликации транзакции.

6.4.5. shardman.pg_stat_monitor

В представлении shardman.pg_stat_monitor содержится одна строка с метриками Shardman monitor. Данные этого представления основаны на Сборщике статистики. Столбцы представления описаны в Таблица 6.5.

Таблица 6.5. Столбцы shardman.pg_stat_monitor

NameТипОписание
resolved_deadlocksbigintЧисло снятых распределённых взаимоблокировок
aborted_xactsbigintЧисло прерванных устаревших подготовленных транзакций
committed_xactsbigintЧисло зафиксированных устаревших подготовленных транзакций
errorsbigintЧисло ошибок Shardman monitor
stats_resettimestamp with time zoneПоследнее время сброса этих статистических данных

6.4.6. shardman.pg_stat_netusage

В представлении shardman.pg_stat_netusage содержится одна строка, показывающая общий объём данных, передаваемых по сети между узлами кластера Shardman. Данные этого представления основаны на Сборщике статистики. Столбцы представления описаны в Таблица 6.6.

Таблица 6.6. Столбцы shardman.pg_stat_netusage

NameТипОписание
netusage_recv_bytesnumericОбщее количество байтов, полученных по сети от других узлов каждым узлом кластера Shardman
netusage_sent_bytesnumericОбщее количество байтов, отправленных по сети другим узлам каждым узлом кластера Shardman
stats_resettimestamp with time zoneПоследнее время сброса этих статистических данных

6.4.7. shardman.pg_stat_foreign_stat_bytes

В представлении shardman.pg_stat_foreign_stat_bytes показывается объём статистики для сторонних отношений, передаваемый по сети между узлами кластера Shardman. Данные этого представления основаны на Сборщике статистики. Столбцы представления описаны в Таблица 6.7.

Таблица 6.7. Столбцы shardman.pg_stat_foreign_stat_bytes

NameТипОписание
foreign_stat_recv_bytesbigintОбщее количество байтов статистики для сторонних отношений, полученных этим узлом по сети от других узлов
stats_resettimestamp with time zoneПоследнее время сброса этих статистических данных

6.4.8. Диагностические представления для мультиплексора

Представления в данном разделе отображают информацию о процессе мультиплексирования Silk. Более подробная информация о процессе мультиплексирования silkroad представлена в разделе Раздел 7.4.

6.4.8.1. shardman.silk_routes

В представлении shardman.silk_routes отображается снимок актуального состояния таблицы маршрутов мультиплексора. Столбцы этого представления приведены в разделе Таблица 6.8.

Таблица 6.8. Столбцы shardman.silk_routes

NameТипОписание
hashvalueintegerВнутренний уникальный идентификатор маршрута. Он может использоваться для соединения с другими диагностическими представлениями Silk.
origin_ipinetIP-адрес узла-источника, сгенерировавшего данный маршрут
origin_portint2Внешний порт соединения по протоколу TCP узла-источника, сгенерировавшего данный маршрут
channel_idintegerПорядковый номер маршрута в пределах узла, который сгенерировал данный маршрут. channel_id уникален для пары origin_ip + origin_port. Данная пара является уникальным идентификатором узла в кластере Shardman, и, таким образом, кортеж, состоящий из origin_ip + origin_port + channel_id, является уникальным идентификатором маршрута в кластере Shardman.
from_cnintegerДля входящих маршрутов (то есть маршрутов, не сгенерированных данным узлом) содержит индекс соединения в представлении shardman.silk_connects, а для сгенерированных данным узлом маршрутов — -1.
backend_idintegerИдентификатор локального процесса, который в данный момент использует этот маршрут: либо идентификатор обслуживающего процесса, сгенерировавшего этот маршрут, либо идентификатор рабочего процесса silkworm, которому назначен маршрут. Для входящих маршрутов в очереди заданий, которые ещё не назначены рабочим процессам, — -1.
pending_queue_bytesbigintРазмер очереди отложенных сообщений (ожидающих свободный рабочий процесс) для данного маршрута, в байтах. Это значение применимо только для входящих маршрутов каждого узла, которым ещё не назначен рабочий процесс.
pending_queue_messagesbigintЧисло сообщений в очереди отложенных сообщений в ожидании рабочего процесса для данного маршрута. Это значение применимо только для входящих маршрутов каждого узла, которым ещё не назначен рабочий процесс.
connectsinteger[]Список индексов соединений, которые сейчас используют данный маршрут.

6.4.8.2. shardman.silk_connects

В представлении shardman.silk_connects отображается список текущих соединений мультиплексора. Столбцы представления приведены в разделе Таблица 6.9.

Таблица 6.9. Столбцы shardman.silk_connects

NameТипОписание
cn_indexintegerУникальный индекс соединения
reg_ipinet«Регистрационный» IP-адрес узла, с которым установлено соединение. Более подробное описание представлено в разделе Примечания.
reg_portint2«Регистрационный» TCP-порт узла, с которым установлено соединение. Более подробное описание представлено в разделе Примечания.
read_ev_activebooleantrue, если мультиплексор готов к получению данных во входящую очередь. Более подробное описание представлено в разделе Примечания.
write_ev_activebooleantrue, если мультиплексор заполнил очередь неотправленными сообщениями и ожидает её освобождения. Более подробная информация представлена в разделе Примечания.
is_outgoingbooleantrue для исходящих соединений (созданных командой connect), false для входящих соединений (созданных командой accept). Используется только в процессе начального согласования.
statetextТекущее состояние соединения: connected — соединение установлено, in progress — клиент уже подключился, но начальное согласование ещё не произошло, и free — клиент отключился, но соединение ещё не было разорвано.
pending_queue_bytesbigintРазмер очереди неотправленных сообщений для данного соединения, в байтах
pending_queue_messagesbigintЧисло сообщений в очереди из неотправленных сообщений для данного соединения
blocked_by_backendintegerИдентификатор обслуживающего процесса, блокирующего данное соединение
blocks_backendsinteger[]Список идентификаторов обслуживающих процессов, заблокированных данным соединением
routesinteger[]Список уникальных идентификаторов маршрутов, использующих данное соединение

6.4.8.3. shardman.silk_backends

В представлении shardman.silk_backends отображается список текущих процессов двух типов: обслуживающие процессы для клиентских соединений и рабочие процессы silkworm мультиплексора, которые с ним взаимодействуют. Столбцы данного представления описаны в разделе Таблица 6.10.

Таблица 6.10. Столбцы shardman.silk_backends

NameТипОписание
backend_idintegerУникальный идентификатор обслуживающего/рабочего процесса
pidintegerИдентификатор процесса ОС
attachedbooleanПриобретает значение true, если процесс привязан к мультиплексору, в противном случае false
read_ev_activebooleantrue, если обслуживающий/рабочий процесс готов к получению данных во входящую очередь. Более подробное описание представлено в разделе Примечания.
write_ev_activebooleantrue, если обслуживающий/рабочий процесс заполнил очередь неотправленных сообщений и ожидает её освобождения. Более подробное описание представлено в разделе Примечания.
is_workerbooleantrue, если данный процесс — это рабочий процесс silkworm мультиплексора; false, если любой другой
pending_queue_bytesbigintРазмер очереди сообщений, отправляемых этому обслуживающему/рабочему процессу, в байтах
pending_queue_messagesbigintЧисло сообщений в очереди сообщений, отправляемых этому обслуживающему/рабочему процессу
blocked_by_connectintegerИндекс соединения, блокирующего данный обслуживающий/рабочий процесс
blocks_connectsinteger[]Список индексов соединений, заблокированных данным обслуживающим/рабочим процессом
routesinteger[]Список уникальных идентификаторов маршрутов, используемых данным обслуживающим/рабочим процессом
in_queue_usedbigintОбъём данных входящей очереди в байтах в общей памяти между обслуживающим процессом и мультиплексором
out_queue_usedbigintОбъём данных (в байтах) исходящей очереди в общей памяти между обслуживающим процессом и мультиплексором

6.4.8.4. shardman.silk_routing

В представлении shardman.silk_routing отображается результат работы функции shardman.silk_routing. Столбцы этого представления приведены в разделе Таблица 6.11.

Таблица 6.11. Столбцы shardman.silk_routing

NameТипОписание
hashvalueintegerВнутренний уникальный идентификатор маршрута
origin_ipinetIP-адрес узла, сгенерировавшего данный маршрут
origin_portint2Внешний порт соединения по протоколу TCP узла-источника, сгенерировавшего данный маршрут
channel_idintegerПорядковый номер маршрута в пределах узла, сгенерировавшего данный маршрут
is_replyboolИндекс соединения, через который получено сообщение, в результате которого был сгенерирован данный маршрут
pending_queue_bytesbigintРазмер очереди заданий в байтах
pending_queue_messagesbigintКоличество сообщений в очереди заданий
backend_idintegerИдентификатор локального процесса, который в данный момент использует этот маршрут: либо идентификатор обслуживающего процесса, сгенерировавшего этот маршрут, либо идентификатор рабочего процесса silkworm, которому назначен маршрут. Для входящих маршрутов в очереди заданий, которые ещё не назначены рабочим процессам, — -1.
backend_pidintegerИдентификатор серверного процесса, обслуживающего текущий сеанс
attachedbooleanПриобретает значение true, если процесс привязан к мультиплексору, в противном случае false
backend_rd_activebooleantrue, если обслуживающий/рабочий процесс готов к получению данных во входящую очередь. Более подробное описание представлено в разделе Примечания.
backend_wr_activebooleantrue, если обслуживающий/рабочий процесс заполнил очередь неотправленных сообщений и ожидает её освобождения. Более подробное описание представлено в разделе Примечания.
is_workerbooleantrue, если данный процесс — это рабочий процесс silkworm мультиплексора; false, если любой другой
backend_blocked_by_cnintegerИндекс соединения, блокирующего данный обслуживающий/рабочий процесс
blocks_connectsinteger[]Список индексов соединений, заблокированных данным обслуживающим/рабочим процессом
in_queue_usedbigintОбъём данных входящей очереди в байтах в общей памяти между обслуживающим процессом и мультиплексором
out_queue_usedbigintОбъём данных (в байтах) исходящей очереди в общей памяти между обслуживающим процессом и мультиплексором
connect_idintegerУникальный индекс соединения
reg_ipinet«Регистрационный» IP-адрес узла, с которым установлено соединение
reg_portint2«Регистрационный» TCP-порт узла, с которым установлено соединение
connect_rd_activebooleantrue, если мультиплексор готов к получению данных во входящую очередь
connect_wr_activebooleantrue, если мультиплексор заполнил очередь неотправленными сообщениями и ожидает её освобождения
connect_is_outgoingbooleantrue для исходящих соединений (созданных командой connect), false для входящих соединений (созданных командой accept). Используется только в процессе начального согласования.
connect_statetextТекущее состояние соединения: connected — соединение установлено, in progress — клиент уже подключился, но начальное согласование ещё не произошло, и free — клиент отключился, но соединение ещё не было разорвано
connect_outgoing_queue_bytesbigintРазмер очереди неотправленных сообщений для данного соединения, в байтах
connect_outgoing_queue_messagesbigintЧисло сообщений в очереди из неотправленных сообщений для данного соединения
connect_blocked_by_bkintegerИдентификатор обслуживающего процесса, блокирующего данное соединение
blocks_backendsinteger[]Список идентификаторов обслуживающих процессов, заблокированных данным соединением

6.4.8.5. shardman.silk_pending_jobs

В представлении shardman.silk_pending_jobs отображается список текущих маршрутов в очереди заданий мультиплексора, которые ещё не назначены рабочим процессам. Столбцы представления приведены в разделе Таблица 6.12.

Таблица 6.12. Столбцы shardman.silk_pending_jobs

NameТипОписание
hashvalueintegerВнутренний уникальный идентификатор маршрута
origin_ipinetIP-адрес узла, сгенерировавшего данный маршрут
origin_portint2Порт соединения по протоколу TCP узла, сгенерировавшего данный маршрут
channel_idintegerПорядковый номер маршрута в пределах узла, сгенерировавшего данный маршрут
querytextПервое сообщение в очереди заданий
pending_queue_bytesbigintРазмер очереди заданий в байтах
pending_queue_messagesbigintКоличество сообщений в очереди заданий

6.4.8.6. shardman.silk_statinfo

В представлении shardman.silk_statinfo отображается информация о текущем состоянии мультиплексора. Столбцы представления приведены в разделе Таблица 6.13.

Таблица 6.13. Столбцы shardman.silk_statinfo

NameТипОписание
pidintegerИдентификатор процесса silkroad
started_attimestamp with time zoneВремя запуска процесса silkroad
transferred_bytesjsonОбъект JSON из пар ключ/значение, в которой ключ — тип сообщения, а значение — общее число байтов, отправленных для такого типа сообщений при условии, что было послано хотя бы одно сообщение такого типа
transferred_pktsjsonОбъект JSON из пар ключ/значение, в которой ключ — тип сообщения, а значение — общее число отправленных сообщений такого типа при условии, что было послано хотя бы одно сообщение такого типа
transferred_maxjsonОбъект JSON из пар ключ/значение, в которой ключ — тип сообщения, а значение — максимальный размер сообщения такого типа при условии, что было послано хотя бы одно сообщение такого типа
memcxt_dpg_allocatedbigintЗначение mem_allocated процесса DPGMemoryContext
memcxt_top_allocatedbigintЗначение mem_allocated процесса TopMemoryContext
read_efd_maxbigintМаксимальное время чтения eventfd с момента перезапуска
write_efd_maxbigintМаксимальное время записи eventfd с момента перезапуска
read_efd_totalbigintОбщее время чтения eventfd с момента перезапуска
write_efd_totalbigintОбщее время записи eventfd с момента перезапуска
read_efd_countbigintОбщее количество событий чтения eventfd с момента перезапуска
write_efd_countbigintОбщее количество событий записи eventfd с момента перезапуска
sort_time_maxbigintМаксимальное время операций сортировки с включением silk_flow_control (при значении, отличном от none)
sort_time_totalbigintОбщее время операций сортировки с включением silk_flow_control (при значении, отличном от none)
sort_time_countbigintОбщее количество операций сортировки с включением silk_flow_control (при значении, отличном от none)

Обратите внимание, что значения для read_efd_max, write_efd_max, read_efd_total, write_efd_total, read_efd_count, write_efd_count, sort_time_max, sort_time_total и sort_time_count рассчитываются, только если включён параметр конфигурации shardman.silk_track_time.

6.4.8.7. shardman.silk_state

В представлении shardman.silk_state отображается снимок текущего состояния процесса silkroad. Столбцы этого представления приведены в разделе Таблица 6.14.

Таблица 6.14. Столбцы shardman.silk_state

NameТипОписание
statetextСостояние процесса silkroad

6.4.8.8. Примечания

reg_ip и reg_port являются не фактическими сетевыми адресами, а адресами, через которые мультиплексор подключается к узлу. Они определяются в ходе начального согласования между мультиплексором и узлами и равны параметрам соответствующих серверов из таблицы pg_foreign_server.

Если мультиплексор находится в состоянии idle, для параметра read_ev_active устанавливаются значения true и для параметра write_ev_active устанавливаются значения false.