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

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

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

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

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

Глобальное представлениеЛокальное представлениеОписание
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_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_silk_routesshardman.silk_routesВ данном представлении отображается снимок актуального состояния таблицы маршрутов мультиплексора.
shardman.gv_silk_connectsshardman.silk_connectsВ данном представлении отображается список текущих соединений мультиплексора.
shardman.gv_silk_connectsshardman.silk_backendsВ данном представлении отображается список текущих процессов двух типов: обслуживающие процессы для клиентских соединений и рабочие процессы silkworm мультиплексора, которые с ним взаимодействуют.
shardman.gv_silk_pending_jobsshardman.silk_pending_jobsВ данном представлении отображается список текущих маршрутов в очереди заданий мультиплексора, которые ещё не назначены рабочим процессам.

6.3.2. shardman.pg_stat_csn

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

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

ИмяТипОписание
csn_snapshots_importedbigintОбщее количество импортированных снимков CSN
csn_total_import_delayintervalСуммарная продолжительность всех задержек при импорте снимков CSN, в микросекундах
csn_max_shiftbigintМаксимальное зарегистрированное смещение CSN снимка, вызвавшее задержку
global_oldest_csnbigintCSN старейшей транзакции в кластере
global_oldest_xidxidXID старейшей транзакции в кластере
global_oldest_rgidintegerНомер группы репликации со старейшей транзакцией в кластере
local_oldest_csnbigintCSN старейшей транзакции на текущем узле
local_oldest_xidxidXID старейшей транзакции на текущем узле
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Последнее время сброса этих статистических данных

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

Примечание

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

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

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

6.3.3.1. shardman.silk_routes

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

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

ИмяТипОписание
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.3.3.2. shardman.silk_connects

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

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

ИмяТипОписание
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.3.3.3. shardman.silk_backends

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

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

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

6.3.3.4. shardman.silk_pending_jobs

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

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

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

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

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

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