6.3. Представления
6.3.1. Глобальные представления
В Shardman есть ряд глобальных представлений, основанных на локальных представлениях PostgreSQL. Определение столбцов глобального представления совпадает с их определением в соответствующем локальном представлении. Глобальное представление показывает объединение результатов выборки из соответствующих локальных представлений. Строки возвращаются из каждого узла кластера. В глобальных представлениях в столбце rgid
выводятся идентификаторы группы репликации узла, из которого взяты строки.
Ниже представлен список глобальных представлений со ссылками на соответствующие локальные представления:
Таблица 6.1. Глобальные и локальные представления
Глобальное представление | Локальное представление | Описание |
---|---|---|
shardman.gv_stat_activity | pg_stat_activity | По одной строке для каждого серверного процесса с информацией, относящейся к текущей деятельности этого процесса. |
shardman.gv_stat_progress_vacuum | pg_stat_progress_vacuum | В процессе выполнения VACUUM представление pg_stat_progress_vacuum будет содержать по одной строке для каждого обслуживающего процесса (включая рабочие процессы автоочистки), производящего очистку в данный момент. |
shardman.gv_stat_replication | pg_stat_replication | По одной строке для каждого процесса-передатчика WAL со статистикой по репликации на ведомом сервере, к которому подключён этот процесс. |
shardman.gv_stat_replication_slots | pg_stat_replication_slots | По одной строке со статистикой по использованию слота репликации для каждого такого слота. |
shardman.gv_stat_subscription | pg_stat_subscription | По одной строке для подписки для основного рабочего процесса (с NULL в PID, если процесс не работает) и дополнительные строки для рабочих процессов, осуществляющих копирование начальных данных для таблиц в подписке. |
shardman.gv_stat_ssl | pg_stat_ssl | По одной строке для каждого обслуживающего процесса и процесса, передающего WAL, которые показывают статистику использования SSL для подключений. |
shardman.gv_stat_gssapi | pg_stat_gssapi | По одной строке для каждого обслуживающего процесса с информацией об использовании GSSAPI для конкретного подключения. |
shardman.gv_stat_archiver | pg_stat_archiver | Только одна строка со статистикой работы процесса архивации WAL. |
shardman.gv_stat_bgwriter | pg_stat_bgwriter | Только одна строка со статистикой работы фонового процесса записи. |
shardman.gv_stat_wal | pg_stat_wal | Только одна строка со статистикой работы WAL. |
shardman.gv_stat_database | pg_stat_database | По одной строке на каждую базу данных со статистикой по отменам запросов, выполненным вследствие конфликта с процессами восстановления на ведомых серверах. |
shardman.gv_stat_database_conflicts | pg_stat_database_conflicts | По одной строке на каждую базу данных со статистикой по отменам запросов, выполненным вследствие конфликтов с процессами восстановления на ведомых серверах. Данное представление содержит информацию только о ведомых серверах, поскольку на ведущих серверах конфликты не происходят. |
shardman.gv_stat_all_tables | pg_stat_all_tables | По одной строке на каждую таблицу в текущей базе данных со статистикой по обращениям к этой таблице. |
shardman.gv_stat_all_indexes | pg_stat_all_indexes | По одной строке для каждого индекса в текущей базе данных со статистикой по обращениям к этому индексу. |
shardman.gv_statio_all_tables | pg_statio_all_tables | По одной строке для каждой таблицы в текущей базе данных со статистикой по операциям ввода/вывода с этой таблицей. |
shardman.gv_statio_all_indexes | pg_statio_all_indexes | По одной строке для каждого индекса в текущей базе данных со статистикой по операциям ввода/вывода для этого индекса. |
shardman.gv_statio_all_sequences | pg_statio_all_sequences | По одной строке для каждой последовательности в текущей базе данных со статистикой по операциям ввода/вывода с этой последовательностью. |
shardman.gv_stat_user_functions | pg_stat_user_functions | По одной строке для каждой отслеживаемой функции со статистикой по выполнениям этой функции. |
shardman.gv_stat_slru | pg_stat_slru | По одной строке со статистикой работы для каждого SLRU-кеша. |
shardman.gv_locks | pg_locks | Данное представление даёт доступ к информации о блокировках, удерживаемых активными процессами на сервере баз данных. |
shardman.gv_shmem_allocations | pg_shmem_allocations | В представлении показываются блоки памяти, выделенные в основном сегменте общей памяти сервера. |
shardman.gv_backend_memory_contexts | pg_backend_memory_contexts | В представлении показываются все контексты памяти серверного процесса, обслуживающего текущий сеанс. |
shardman.gv_stat_csn | shardman.pg_stat_csn | Одна строка, показывающая статистику задержек, возникающих во время импорта снимков CSN. |
shardman.gv_stat_monitor | shardman.pg_stat_monitor | Одна строка, показывающая метрики Shardman monitor. |
shardman.gv_stat_netusage | shardman.pg_stat_net_usage | Одна строка, показывающая совокупный сетевой трафик между узлами кластера Shardman. |
shardman.gv_silk_routes | shardman.silk_routes | В данном представлении отображается снимок актуального состояния таблицы маршрутов мультиплексора. |
shardman.gv_silk_connects | shardman.silk_connects | В данном представлении отображается список текущих соединений мультиплексора. |
shardman.gv_silk_backends | shardman.silk_backends | В данном представлении отображается список текущих процессов двух типов: обслуживающие процессы для клиентских соединений и рабочие процессы silkworm мультиплексора, которые с ним взаимодействуют. |
shardman.gv_silk_pending_jobs | shardman.silk_pending_jobs | В данном представлении отображается список текущих маршрутов в очереди заданий мультиплексора, которые ещё не назначены рабочим процессам. |
shardman.gv_stats_sdm_statements | pgpro_stats_sdm_statements | Данное представление даёт доступ к агрегированной статистике распределённых запросов. Его можно создать только в базе данных, где Shardman установлен раньше, чем pgpro_stats. Чтобы это глобальное представление работало, необходимо, чтобы pgpro_stats был создан на всех узлах кластера. |
shardman.gv_lock_graph | shardman.lock_graph | Это представление отображает граф блокировок между процессами на узлах кластера Shardman, включая внешние блокировки. Оно основано на системных представлениях pg_locks и pg_prepared_xacts , а также на представлении pg_stat_activity сборщика статистики. |
shardman.gv_stat_foreign_bytes | shardman.pg_stat_foreign_stat_bytes | Это представление показывает объём статистики для сторонних отношений, передаваемый по сети между узлами кластера Shardman. |
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
Name | Тип | Описание |
---|---|---|
csn_snapshots_imported | bigint | Общее количество импортированных снимков CSN |
csn_total_import_delay | interval | Суммарная продолжительность всех задержек при импорте снимков CSN, в микросекундах |
csn_max_shift | bigint | Максимальное зарегистрированное смещение CSN снимка, вызвавшее задержку |
local_oldest_csn | bigint | CSN старейшей транзакции на текущем узле |
local_oldest_xid | xid | XID старейшей транзакции на текущем узле |
CSNXidMap_head_csn | bigint | Последний CSN в CSNSnapshotXidMap |
CSNXidMap_head_xid | xid | XID, соответствующий последнему CSN в CSNSnapshotXidMap |
CSNXidMap_tail_csn | bigint | Старейший CSN в CSNSnapshotXidMap |
CSNXidMap_tail_xid | xid | XID, соответствующий старейшему CSN в CSNSnapshotXidMap |
stats_reset | timestamp with time zone | Последнее время сброса этих статистических данных |
CSNXidMap_last_trim | timestamp with time zone | Показывает время последнего вызова функции shardman.trim_csnxid_map() . |
Чтобы сбросить статистику, связанную с CSN, вызовите функцию pg_stat_reset_shared
с единственным текстовым аргументом, равным csn
.
Примечание
Функциональность Shardman, связанная со снимками CSN, находится в стадии разработки. Поэтому в будущих выпусках ожидаются изменения в соответствующих представлениях.
6.3.3. shardman.oldest_csn
В представлении shardman.oldest_csn
содержится одна строка, показывающая csn
кортежа, xid
и rgid
с CSN и XID самой старой транзакции в кластере, а также номер группы репликации транзакции.
6.3.4. shardman.pg_stat_monitor
В представлении shardman.pg_stat_monitor
содержится одна строка с метриками Shardman monitor. Данные этого представления основаны на Сборщике статистики. Столбцы представления описаны в Таблица 6.3.
Таблица 6.3. Столбцы shardman.pg_stat_monitor
Name | Тип | Описание |
---|---|---|
resolved_deadlocks | bigint | Число снятых распределённых взаимоблокировок |
aborted_xacts | bigint | Число прерванных устаревших подготовленных транзакций |
committed_xacts | bigint | Число зафиксированных устаревших подготовленных транзакций |
errors | bigint | Число ошибок Shardman monitor |
stats_reset | timestamp with time zone | Последнее время сброса этих статистических данных |
6.3.5. shardman.pg_stat_netusage
В представлении shardman.pg_stat_netusage
содержится одна строка, показывающая общий объём данных, передаваемых по сети между узлами кластера Shardman. Данные этого представления основаны на Сборщике статистики. Столбцы представления описаны в Таблица 6.4.
Таблица 6.4. Столбцы shardman.pg_stat_netusage
Name | Тип | Описание |
---|---|---|
netusage_recv_bytes | numeric | Общее количество байтов, полученных по сети от других узлов каждым узлом кластера Shardman |
netusage_sent_bytes | numeric | Общее количество байтов, отправленных по сети другим узлам каждым узлом кластера Shardman |
stats_reset | timestamp with time zone | Последнее время сброса этих статистических данных |
6.3.6. shardman.pg_stat_foreign_stat_bytes
В представлении shardman.pg_stat_foreign_stat_bytes
показывается объём статистики для сторонних отношений, передаваемый по сети между узлами кластера Shardman. Данные этого представления основаны на Сборщике статистики. Столбцы представления описаны в Таблица 6.5.
Таблица 6.5. Столбцы shardman.pg_stat_foreign_stat_bytes
Name | Тип | Описание |
---|---|---|
foreign_stat_recv_bytes | bigint | Общее количество байтов статистики для сторонних отношений, полученных по сети от других узлов данным узлом кластера |
stats_reset | timestamp with time zone | Последнее время сброса этих статистических данных |
6.3.7. Диагностические представления для мультиплексора
Представления в данном разделе отображают информацию о процессе мультиплексирования Silk. Более подробная информация о процессе мультиплексирования silkroad
представлена в разделе Раздел 7.4.
6.3.7.1. shardman.silk_routes
В представлении shardman.silk_routes
отображается снимок актуального состояния таблицы маршрутов мультиплексора. Столбцы этого представления приведены в разделе Таблица 6.6.
Таблица 6.6. Столбцы shardman.silk_routes
Name | Тип | Описание |
---|---|---|
hashvalue | integer | Внутренний уникальный идентификатор маршрута. Он может использоваться для соединения с другими диагностическими представлениями Silk. |
origin_ip | inet | IP-адрес узла-источника, сгенерировавшего данный маршрут |
origin_port | int2 | Внешний порт соединения по протоколу TCP узла-источника, сгенерировавшего данный маршрут |
channel_id | integer | Порядковый номер маршрута в пределах узла, который сгенерировал данный маршрут. channel_id уникален для пары origin_ip + origin_port . Данная пара является уникальным идентификатором узла в кластере Shardman, и, таким образом, кортеж, состоящий из origin_ip + origin_port + channel_id , является уникальным идентификатором маршрута в кластере Shardman. |
from_cn | integer | Для входящих маршрутов (то есть маршрутов, не сгенерированных данным узлом) содержит индекс соединения в представлении shardman.silk_connects , а для сгенерированных данным узлом маршрутов — -1. |
backend_id | integer | Идентификатор локального процесса, который в данный момент использует этот маршрут: либо идентификатор обслуживающего процесса, сгенерировавшего этот маршрут, либо идентификатор рабочего процесса silkworm , которому назначен маршрут. Для входящих маршрутов в очереди заданий, которые ещё не назначены рабочим процессам, — -1. |
pending_queue_bytes | bigint | Размер очереди отложенных сообщений (ожидающих свободный рабочий процесс) для данного маршрута, в байтах. Это значение применимо только для входящих маршрутов каждого узла, которым ещё не назначен рабочий процесс. |
pending_queue_messages | bigint | Число сообщений в очереди отложенных сообщений в ожидании рабочего процесса для данного маршрута. Это значение применимо только для входящих маршрутов каждого узла, которым ещё не назначен рабочий процесс. |
connects | integer[] | Список индексов соединений, которые сейчас используют данный маршрут. |
6.3.7.2. shardman.silk_connects
В представлении shardman.silk_connects
отображается список текущих соединений мультиплексора. Столбцы представления приведены в разделе Таблица 6.7.
Таблица 6.7. Столбцы shardman.silk_connects
Name | Тип | Описание |
---|---|---|
cn_index | integer | Уникальный индекс соединения |
reg_ip | inet | «Регистрационный» IP-адрес узла, с которым установлено соединение. Более подробное описание представлено в разделе Примечания. |
reg_port | int2 | «Регистрационный» TCP-порт узла, с которым установлено соединение. Более подробное описание представлено в разделе Примечания. |
read_ev_active | boolean | true , если мультиплексор готов к получению данных во входящую очередь. Более подробное описание представлено в разделе Примечания. |
write_ev_active | boolean | true , если мультиплексор заполнил очередь неотправленными сообщениями и ожидает её освобождения. Более подробная информация представлена в разделе Примечания. |
is_outgoing | boolean | true для исходящих соединений (созданных командой connect ), false для входящих соединений (созданных командой accept ). Используется только в процессе начального согласования. |
state | text | Текущее состояние соединения: connected — соединение установлено, in progress — клиент уже подключился, но начальное согласование ещё не произошло, и free — клиент отключился, но соединение ещё не было разорвано. |
pending_queue_bytes | bigint | Размер очереди неотправленных сообщений для данного соединения, в байтах |
pending_queue_messages | bigint | Число сообщений в очереди из неотправленных сообщений для данного соединения |
blocked_by_backend | integer | Идентификатор обслуживающего процесса, блокирующего данное соединение |
blocks_backends | integer[] | Список идентификаторов обслуживающих процессов, заблокированных данным соединением |
routes | integer[] | Список уникальных идентификаторов маршрутов, использующих данное соединение |
6.3.7.3. shardman.silk_backends
В представлении shardman.silk_backends
отображается список текущих процессов двух типов: обслуживающие процессы для клиентских соединений и рабочие процессы silkworm
мультиплексора, которые с ним взаимодействуют. Столбцы данного представления описаны в разделе Таблица 6.8.
Таблица 6.8. Столбцы shardman.silk_backends
Name | Тип | Описание |
---|---|---|
backend_id | integer | Уникальный идентификатор обслуживающего/рабочего процесса |
pid | integer | Идентификатор процесса ОС |
read_ev_active | boolean | true , если обслуживающий/рабочий процесс готов к получению данных во входящую очередь. Более подробное описание представлено в разделе Примечания. |
write_ev_active | boolean | true , если обслуживающий/рабочий процесс заполнил очередь неотправленных сообщений и ожидает её освобождения. Более подробное описание представлено в разделе Примечания. |
is_worker | boolean | true , если данный процесс — это рабочий процесс silkworm мультиплексора; false , если любой другой |
pending_queue_bytes | bigint | Размер очереди сообщений, отправляемых этому обслуживающему/рабочему процессу, в байтах |
pending_queue_messages | bigint | Число сообщений в очереди сообщений, отправляемых этому обслуживающему/рабочему процессу |
blocked_by_connect | integer | Индекс соединения, блокирующего данный обслуживающий/рабочий процесс |
blocks_connects | integer[] | Список индексов соединений, заблокированных данным обслуживающим/рабочим процессом |
routes | integer[] | Список уникальных идентификаторов маршрутов, используемых данным обслуживающим/рабочим процессом |
6.3.7.4. shardman.silk_pending_jobs
В представлении shardman.silk_pending_jobs
отображается список текущих маршрутов в очереди заданий мультиплексора, которые ещё не назначены рабочим процессам. Столбцы представления приведены в разделе Таблица 6.9.
Таблица 6.9. Столбцы shardman.silk_pending_jobs
Name | Тип | Описание |
---|---|---|
hashvalue | integer | Внутренний уникальный идентификатор маршрута |
origin_ip | inet | IP-адрес узла, сгенерировавшего данный маршрут |
origin_port | int2 | Порт соединения по протоколу TCP узла, сгенерировавшего данный маршрут |
channel_id | integer | Порядковый номер маршрута в пределах узла, сгенерировавшего данный маршрут |
from_cn | integer | Индекс соединения, через который получено сообщение, в результате которого был сгенерирован данный маршрут |
6.3.7.5. Примечания
reg_ip
и reg_port
являются не фактическими сетевыми адресами, а адресами, через которые мультиплексор подключается к узлу. Они определяются в ходе начального согласования между мультиплексором и узлами и равны параметрам соответствующих серверов из таблицы pg_foreign_server
.
Если мультиплексор находится в состоянии idle
, для параметра read_ev_active
устанавливаются значения true
и для параметра write_ev_active
устанавливаются значения false
.