檢視postgresql系統資訊的常用命令操作
1、檢視當前資料庫例項版本。
postgres=# select version(); version ----------------------------------------------------------------------------------------------------------- PostgreSQL 9.3.0 on x86_64-unknown-linux-gnu,compiled by gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-23),64-bit (1 row)
2、檢視資料庫啟動時間。
postgres=# select pg_postmaster_start_time(); pg_postmaster_start_time ------------------------------- 2019-08-26 10:53:47.328699+08 (1 row)
3、檢視最後load配置檔案的時間,可以使用pg_ctl reload改變配置的裝載時間。
postgres=# select pg_conf_load_time(); pg_conf_load_time ------------------------------ 2019-08-26 10:53:46.57045+08 (1 row)
4、顯示當前資料庫時區。
postgres=# show timezone; TimeZone ---------- PRC (1 row)
5、顯示資料庫的時間,有時資料庫的時區不是當前作業系統的時區,這時在資料庫中看到的時間就與作業系統中看到的時間不一樣。
postgres=# select now(); now ------------------------------- 2019-08-26 10:58:36.508472+08 (1 row)
6、檢視當前使用者名稱,current_user與user是完全相同的。
postgres=# select user; current_user -------------- postgres (1 row) postgres=# select current_user; current_user -------------- postgres (1 row)
7、檢視session使用者,通常情況下,session_user與user是相同的。但使用set role改變使用者角色時,session_user始終是那個原始使用者,而user是當前的角色使用者。
postgres=# select session_user; session_user -------------- postgres (1 row) postgres=# set role=aaa; SET postgres=> select session_user; session_user -------------- postgres (1 row) postgres=> select user; current_user -------------- aaa (1 row)
8、查詢當前連線的資料庫名稱,使用current_catalog和current_database()都顯示當前連線的資料庫名稱,這兩者功能完全相同,只不過catalog是SQL標準中的用語。
postgres=# select current_catalog,current_database(); current_database | current_database ------------------+------------------ postgres | postgres (1 row)
9、檢視當前session所在客戶端的IP地址及埠(僅限TCP-IP連線,如果是UDP連線的話,查詢結果IP與port都顯示空)。
postgres=# select inet_client_addr(),inet_client_port(); inet_client_addr | inet_client_port ------------------+------------------ | (1 row)
10、查詢當前資料庫伺服器的IP地址及埠(僅限TCP-IP連線,如果是UDP連線的話,查詢結果IP與port都顯示空)。
postgres=# select inet_server_addr(),inet_server_port(); inet_server_addr | inet_server_port ------------------+------------------ 192.168.91.5 | 5866 (1 row)
11、查詢當前session的後臺服務程序的PID。
postgres=# select pg_backend_pid(); pg_backend_pid ---------------- 3958 (1 row)
12、檢視當前共享記憶體的大小。
postgres=# show shared_buffers; shared_buffers ---------------- 128MB (1 row)
13、修改當前session引數配置。
postgres=# set maintenance_work_mem to '128MB'; SET postgres=# select set_config('maintenance_work_mem','128MB',false); set_config ------------ 128MB (1 row)
14、檢視當前正在寫的WAL檔案。
postgres=# select pg_xlogfile_name(pg_current_xlog_location()); pg_xlogfile_name -------------------------- 00000001000000000000004B (1 row)
15、檢視當前WAL的buffer中還有多少位元組的資料沒有寫到磁碟中。
postgres=# select pg_xlog_location_diff(pg_current_xlog_insert_location(),pg_current_xlog_location()); pg_xlog_location_diff ----------------------- 0 (1 row)
16、檢視資料庫例項是否正在做基礎備份。
postgres=# select pg_is_in_backup(),pg_backup_start_time(); pg_is_in_backup | pg_backup_start_time -----------------+---------------------- f | (1 row)
17、檢視當前資料庫例項時HOT Standby狀態還是正常資料庫狀態。
postgres=# select pg_is_in_recovery(); pg_is_in_recovery ------------------- f (1 row)
18、檢視資料庫大小,如果資料庫中有很多表,使用上述命令將比較慢,可能對當前系統產生不利影響,pg_size_pretty()函式會把數字以MB、GB等格式顯示出來。
postgres=# select pg_database_size('postgres'),pg_size_pretty(pg_database_size('postgres')); pg_database_size | pg_size_pretty ------------------+---------------- 67922104 | 65 MB (1 row)
19、查看錶的大小,僅計算表的大小,不包括索引的大小。
postgres=# select pg_size_pretty(pg_relation_size('test')); pg_size_pretty ---------------- 0 bytes (1 row)
20、查看錶的大小,pg_total_relation_size()把表上索引的大小也計算入內。
postgres=# select pg_size_pretty(pg_total_relation_size('test')); pg_size_pretty ---------------- 0 bytes (1 row)
21、查看錶上所有索引的大小,pg_indexes_size()函式的引數名是一個表對應的oid(輸入表名會自動轉換成表的oid),而不是索引的名稱。
postgres=# select pg_size_pretty(pg_indexes_size('test')); pg_size_pretty ---------------- 0 bytes (1 row)
22、查看錶空間大小。
postgres=# select pg_size_pretty(pg_tablespace_size('pg_global')); pg_size_pretty ---------------- 477 kB (1 row)
23、查看錶對應的資料檔案。
postgres=# select pg_relation_filepath('test'); pg_relation_filepath ---------------------- base/12902/24952 (1 row)
補充:PostgreSQL命令列常用命令psql
PostgreSQL命令列常用命令(psql)
一般我們使用 psql來和資料庫互動,方括號中為可選項引數,不帶任何引數表示連線本機
psql [option…] [dbname [username]]
登入資料庫
psql -h 127.0.0.1 -p 5432 -d database -U postgres
-h 資料庫ip
-p 埠號
-d 資料庫名
-U 登入使用者名稱
匯入SQL指令碼
示例:
psql -U postgres -d database -f sqlScript.sql
將sqlScript.sql匯入到名為database的資料庫中
常用命令
展示資料庫
\l 或者 \list
支援正則匹配,例如展示包含post字元的資料庫
\l '*post*'
切換資料庫(建立新的資料庫連線)
\c 可選引數 dbname [ username ] [ host ] [ port ]
eg:
\c postgres 或者 \c postgres username localhost 5432
展示當前資料庫下所有關係(table、view、sequence等)
\d 展示當前所有表
\d “Account” 展示Account表字段資訊
展示當前資料庫下所有schema資訊
\dn
顯示當前使用的schema
SHOW search_path;
當前schema為public
search_path ---------------- "$user",public
切換當前schema
SET search_path TO myschema; # set search_path to auth; # SHOW search_path; search_path ------------- auth
斷開資料庫連線
\q
以上為個人經驗,希望能給大家一個參考,也希望大家多多支援我們。如有錯誤或未考慮完全的地方,望不吝賜教。