Shardman has a list of global views based on
the PostgeSQL local views. The definition of
global view columns is the same as in its corresponding local view.
Fetching from a global view returns a union of rows from the
corresponding local views. The rows are fetched from each of their
cluster nodes. Another difference is that the global views have an
added column rgid. The rgid value
shows the replication group ID of the cluster node from
which a row is fetched.
Below is the list of the global views with links to their corresponding local views:
Table 6.1. Global and local views
| Global view | Local view | Description |
|---|---|---|
shardman.gv_stat_activity | pg_stat_activity | One row per server process, showing information related to he current activity of that process. |
shardman.gv_stat_progress_vacuum | pg_stat_progress_vacuum | Whenever VACUUM is running, the
pg_stat_progress_vacuum view will contain
one row for each backend (including autovacuum worker processes)
that is currently vacuuming. |
shardman.gv_stat_replication | pg_stat_replication | One row per WAL sender process, showing statistics about replication to that sender's connected standby server. |
shardman.gv_stat_replication_slots | pg_stat_replication_slots | One row per replication slot, showing statistics about the replication slot's usage. |
shardman.gv_stat_subscription | pg_stat_subscription | One row per subscription for main worker (with null PID if the worker is not running), and additional rows for workers handling the initial data copy of the subscribed tables. |
shardman.gv_stat_ssl | pg_stat_ssl | One row per backend or WAL sender process, showing statistics about SSL usage on this connection. |
shardman.gv_stat_gssapi | pg_stat_gssapi | One row per backend, showing information about GSSAPI usage on this connection. |
shardman.gv_stat_archiver | pg_stat_archiver | One row only, showing statistics about the WAL archiver process's activity. |
shardman.gv_stat_bgwriter | pg_stat_bgwriter | One row only, showing statistics about the background writer process's activity. |
shardman.gv_stat_wal | pg_stat_wal | One row only, showing statistics about WAL activity. |
shardman.gv_stat_database | pg_stat_database_conflicts | One row per database, showing database-wide statistics about query cancels due to conflict with recovery on standby servers. |
shardman.gv_stat_all_tables | pg_stat_all_tables | One row for each table in the current database, showing statistics about accesses to that specific table. |
shardman.gv_stat_all_indexes | pg_stat_all_indexes | One row for each index in the current database, showing statistics about accesses to that specific index. |
shardman.gv_statio_all_tables | pg_statio_all_tables | One row for each table in the current database, showing statistics about I/O on that specific table. |
shardman.gv_statio_all_indexes | pg_statio_all_indexes | One row for each index in the current database, showing statistics about I/O on that specific index. |
shardman.gv_statio_all_sequences | pg_statio_all_sequences | One row for each sequence in the current database, showing statistics about I/O on that specific sequence. |
shardman.gv_stat_user_functions | pg_stat_user_functions | One row for each tracked function, showing statistics about executions of that function. |
shardman.gv_stat_slru | pg_stat_slru | One row per SLRU, showing statistics of operations. |
shardman.gv_locks | pg_locks | This view provides access to information about the locks held by active processes within the database server. |
shardman.gv_shmem_allocations | pg_shmem_allocations | This view shows allocations made from the server's main shared memory segment. |
shardman.gv_backend_memory_contexts | pg_backend_memory_contexts | This view displays all the memory contexts of the server process attached to the current session. |
shardman.gv_stat_csn | shardman.pg_stat_csn | One row showing statistics on delays that take place during import of CSN snapshots. |
shardman.gv_silk_routes | shardman.silk_routes | This view displays the current snapshot of the multiplexor routing table. |
shardman.gv_silk_connects | shardman.silk_connects | This view displays the current list of multiplexor connects. |
shardman.gv_silk_backends | shardman.silk_backends | This view displays the current list of processes of two
kinds: backends that serve client connections and
silkworm multiplexor workers, which interact with
the multiplexor. |
shardman.gv_silk_pending_jobs | shardman.silk_pending_jobs | This view displays the current list of routes in the queue of multiplexor jobs that are not assigned to workers yet. |
shardman.gv_stats_sdm_statements | pgpro_stats_sdm_statements | This view allows accessing the aggregated statistics for the distributed queries. This view can only be created if Shardman is installed for the database that has pgpro_stats. The pgpro_stats must be created on all the cluster nodes for the global view to work. |
shardman.pg_stat_csn #
The shardman.pg_stat_csn view will have one row
showing statistics on delays that take place during import of CSN snapshots.
These delays occur because system clocks on Shardman
cluster nodes may be out of sync. The delays negatively impact the performance
by increasing the query latency. The shardman.pg_stat_csn
view allows tracking these delays. The view data is based on The
Statistics Collector. The columns of the view are shown in
Table 6.2.
Table 6.2. shardman.pg_stat_csn Columns
| Name | Type | Description |
|---|---|---|
csn_snapshots_imported | bigint | Total number of imported CSN snapshots |
csn_total_import_delay | interval | Total duration of all delays in importing CSN snapshots, in microseconds |
csn_max_shift | bigint | Maximum registered snapshot CSN shift that caused a delay |
global_oldest_csn | bigint | CSN of the oldest transaction in the cluster |
global_oldest_xid | xid | XID of the oldest transaction in the cluster |
global_oldest_rgid | integer | Number of the replication group with the oldest transaction in the cluster |
local_oldest_csn | bigint | CSN of the oldest transaction on the current node |
local_oldest_xid | xid | XID of the oldest transaction on the current node |
CSNXidMap_head_csn | bigint | Most recent CSN in the CSNSnapshotXidMap
|
CSNXidMap_head_xid | xid | XID corresponding to the most recent CSN in the
CSNSnapshotXidMap
|
CSNXidMap_tail_csn | bigint | Oldest CSN in the CSNSnapshotXidMap
|
CSNXidMap_tail_xid | xid | XID corresponding to the oldest CSN in the
CSNSnapshotXidMap
|
stats_reset | timestamp with time zone | Time at which these statistics were last reset |
To reset CSN-related statistics, call the
pg_stat_reset_shared function
with the only text argument equal to csn.
Shardman functionality related to CSN snapshots is work in progress. So anticipate changes to the corresponding views in future releases.
shardman.pg_stat_monitor #
The shardman.pg_stat_monitor view will have one row
showing metrics of the Shardman
monitor. The view data is based on the
Statistics Collector. The columns of the view are shown in
Table 6.3.
Table 6.3. shardman.pg_stat_monitor Columns
| Name | Type | Description |
|---|---|---|
resolved_deadlocks | bigint | Number of resolved distributed deadlocks |
aborted_xacts | bigint | Number of aborted outdated prepared transactions |
committed_xacts | bigint | Number of committed outdated prepared transactions |
errors | bigint | Number of Shardman monitor errors |
stats_reset | timestamp with time zone | Time at which these statistics were last reset |
shardman.pg_stat_netusage #
The shardman.pg_stat_netusage view will have one row
showing the cumulative network traffic between Shardman
cluster nodes. The view data is based on the
Statistics Collector. The columns of the view are shown in
Table 6.4.
Table 6.4. shardman.pg_stat_netusage Columns
| Name | Type | Description |
|---|---|---|
netusage_recv_bytes | numeric | Total number of bytes received from other nodes through the network by each Shardman cluster node |
netusage_sent_bytes | numeric | Total number of bytes sent to other nodes through the network by each Shardman cluster node |
stats_reset | timestamp with time zone | Time at which these statistics were last reset |
Views in this section provide various information related to
Silk multiplexing. See Section 7.4
for details of silkroad multiplexing process.
shardman.silk_routes #
The shardman.silk_routes view displays the current
snapshot of the multiplexor routing table. The columns of
the view are shown in Table 6.5.
Table 6.5. shardman.silk_routes Columns
| Name | Type | Description |
|---|---|---|
hashvalue | integer | Internal unique route identifier. Can be used to join with other Silk diagnostics views. |
origin_ip | inet | IP address of the source node, which generated this route |
origin_port | int2 | External TCP connection port of the source node, which generated this route |
channel_id | integer | Route sequential number within the node that generated this route.
channel_id is unique for the pair
origin_ip + origin_port.
This pair is a unique node identifier within the Shardman
cluster and hence the origin_ip +
origin_port + channel_id
tuple is a unique route identifier within the Shardman
cluster.
|
from_cn | integer | Connect index in the shardman.silk_connects
view for incoming routes, that is, not generated by this node, and -1 for
routes generated by this node.
|
backend_id | integer | ID of the local process that is currently using this route: either
the ID of the backend that generated this route or the ID of the
silkworm worker assigned to this route. Equals -1
for queued incoming routes that have not been assigned a
worker yet.
|
pending_queue_bytes | bigint | Size of the queue of delayed messages (awaiting a free worker) for this route, in bytes. This value is only meaningful for incoming routes of each node that are not assigned to a worker yet. |
pending_queue_messages | bigint | Number of messages in the queue of delayed messages (awaiting a free worker) for this route. This value is only meaningful for incoming routes of each node that are not assigned to a worker yet. |
connects | integer[] | List of indexes of connects that are currently using this route. |
shardman.silk_connects #
The shardman.silk_connects view displays the current
list of multiplexor connects. The columns of
the view are shown in Table 6.6.
Table 6.6. shardman.silk_connects Columns
| Name | Type | Description |
|---|---|---|
cn_index | integer | Unique connect index |
reg_ip | inet | “Registration” IP address of the node with which the connection is established. See Notes for details. |
reg_port | int2 | “Registration” TCP port of the node with which the connection is established. See Notes for details. |
read_ev_active | boolean | true if the multiplexor is ready to receive
data to the incoming queue.
See Notes
for details.
|
write_ev_active | boolean | true if the multiplexor filled the queue of
non-sent messages and is waiting for it to get free.
See Notes
for details.
|
is_outgoing | boolean | true if the connection is outgoing, that is,
created by connect, and false
for incoming connects, that is, created by accept.
Only used during the handshaking.
|
state | text | Current state of the connect:
connected — if the connection is established,
in progress — if the client has already
connected, but handshaking has not happened yet,
free — if the client has already
disconnected, but the connect structure for the disconnected client has
not been destroyed yet.
|
pending_queue_bytes | bigint | Size of the queue of non-sent messages for this connect, in bytes |
pending_queue_messages | bigint | Number of messages in the queue of non-sent messages for this connect |
blocked_by_backend | integer | ID of the backend that blocked this connect |
blocks_backends | integer[] | List of IDs of backends that are blocked by this connect |
routes | integer[] | List of unique IDs of routes that use this connect |
shardman.silk_backends #
The shardman.silk_backends view displays the current
list of processes of two kinds: backends that serve client connections and
silkworm multiplexor workers, which interact with the
multiplexor. The columns of the view are shown in
Table 6.7.
Table 6.7. shardman.silk_backends Columns
| Name | Type | Description |
|---|---|---|
backend_id | integer | Unique backend/worker identifier |
pid | integer | OS process ID |
read_ev_active | boolean | true if the backend/worker is ready to receive
data to the incoming queue.
See Notes
for details.
|
write_ev_active | boolean | true if the backend/worker filled the queue
of non-sent messages and is waiting for it to get free.
See Notes
for details.
|
is_worker | boolean | true if this process is a silkworm
multiplexor worker and false otherwise
|
pending_queue_bytes | bigint | Size of the queue of messages being sent to this backend/worker, in bytes |
pending_queue_messages | bigint | Number of messages in the queue of messages being sent to this backend/worker |
blocked_by_connect | integer | Index of the connect that blocks this backend/worker |
blocks_connects | integer[] | List of indexes of connects that are blocked by this backend/worker |
routes | integer[] | List of unique IDs of routes that are used by this backend/worker |
shardman.silk_pending_jobs #
The shardman.silk_pending_jobs view displays the current
list of routes in the queue of delayed multiplexor jobs, that is, jobs
that are not assigned to workers yet. The columns of
the view are shown in Table 6.8.
Table 6.8. shardman.silk_pending_jobs Columns
| Name | Type | Description |
|---|---|---|
hashvalue | integer | Internal unique route identifier |
origin_ip | inet | IP address of the node that generated this route |
origin_port | int2 | TCP connection port of the node that generated this route |
channel_id | integer | Route sequential number within the node that generated this route |
from_cn | integer | Index of the connect from which a message was received that caused generation of this route |
reg_ip and reg_port
values are not actual network addresses, but the addresses by which
the multiplexor accesses the node. They are determined during a handshake
between multiplexor nodes and are equal to the corresponding parameters of
an appropriate server in the pg_foreign_server
table.
All the read_ev_active values are
true and all the
write_ev_active values are
false when the multiplexor is in the
idle state.