bash## pgpool
show pool_nodes;
select client_addr,state,sync_state from pg_stat_replication;
## patroni
[postgres@wtj1vpk8sql01 ~]$ patronictl -c /etc/patroni/patroni.yml list
+ Cluster: pgsql16 (7408451029595073953) -----------+----+-----------+
| Member | Host | Role | State | TL | Lag in MB |
+--------+---------------+--------------+-----------+----+-----------+
| pg01 | 172.17.44.155 | Leader | running | 1 | |
| pg02 | 172.17.44.156 | Replica | running | 1 | 16 |
| pg03 | 172.17.44.157 | Sync Standby | streaming | 1 | 0 |
+--------+---------------+--------------+-----------+----+-----------+
sqlSELECT
pg_database.datname,
pg_size_pretty(pg_database_size(pg_database.datname)) AS size
FROM
pg_database;
datname | size
-----------+---------
postgres | 7628 kB
template1 | 7708 kB
template0 | 7473 kB
(3 rows)
sqlSELECT
name,
setting,
unit
-- (unit * 1024) 'bytes'
FROM pg_settings WHERE name in
('shared_buffers',
'max_connections',
'wal_buffers',
'effective_cache_size',
'work_mem',
'maintenance_work_mem'
);
name | setting | unit
----------------------+---------+------
effective_cache_size | 524288 | 8kB
maintenance_work_mem | 65536 | kB
max_connections | 100 |
shared_buffers | 16384 | 8kB
wal_buffers | 512 | 8kB
work_mem | 4096 | kB
(6 rows)
-- create extension system_stats;
sqlSHOW server_encoding;
server_encoding
-----------------
UTF8
(1 row)
SELECT current_database(), pg_encoding_to_char(encoding)
FROM pg_database
WHERE datname = current_database();
current_database | pg_encoding_to_char
------------------+---------------------
postgres | UTF8
(1 row)
sqlSELECT
pg_postmaster_start_time() AS start_time,
current_timestamp - pg_postmaster_start_time() AS uptime;
start_time | uptime
-------------------------------+-----------------
2024-08-29 14:53:49.014673+08 | 00:40:38.490402
(1 row)
sqlselect relname, pg_size_pretty(pg_relation_size(relid)) from pg_stat_user_tables order by pg_relation_size(relid) desc;
relname | pg_size_pretty
---------+----------------
(0 rows)
INSERT
、UPDATE
、DELETE
)比较频繁要查看 PostgreSQL 数据库中哪些表的写入操作(INSERT
、UPDATE
、DELETE
)比较频繁,可以使用内置的统计视图 pg_stat_user_tables
。该视图记录了自上次服务器启动以来每个表的各种活动统计信息,包括插入、更新和删除操作的计数。
以下是查询表写入频繁程度的 SQL 语句:
sqlSELECT
schemaname,
relname,
n_tup_ins AS inserts,
n_tup_upd AS updates,
n_tup_del AS deletes,
n_tup_ins + n_tup_upd + n_tup_del AS total_writes
FROM
pg_stat_user_tables
ORDER BY
total_writes DESC
LIMIT 10;
schemaname
: 表所在的模式(schema)。relname
: 表的名称。n_tup_ins
: 自上次服务器启动以来的插入行数。n_tup_upd
: 自上次服务器启动以来的更新行数。n_tup_del
: 自上次服务器启动以来的删除行数。total_writes
: 插入、更新、删除操作的总和,用于衡量表的写入频繁程度。total_writes
)降序排列。结果中,写入频率较高的表会排在前面。LIMIT
子句的值。通过这个查询,你可以快速识别哪些表在数据库中写入频率较高,从而有助于优化这些表的性能或进一步分析它们对系统资源的影响。
本文作者:Kevin@灼华
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!