免费在线a视频-免费在线观看a视频-免费在线观看大片影视大全-免费在线观看的视频-色播丁香-色播基地

PostgreSQL日常運維命令總結分享

:2024年09月10日 小周的數據庫進階之路
分享到:

1. 查看服務器版本信息。 2. 查看數據庫信息。 3. 查看字符集信息。 4. 查看連接數量。 5. 查詢當前用戶信息。 6. 查詢SESSION_USER和SESSION_USER等其他用戶信息。

熱衷于分享各種干貨知識,大家有想看或者想學的可以評論區留言,秉承著“開源知識來源于互聯網,回歸于互聯網”的理念,分享一些日常工作中能用到或者頻率比較的內容,希望大家能夠喜歡,并提出寶貴地意見,我們一起提升,守住自己的飯碗。

1、查看版本

postgres=# show server_version;

postgres=# select version();

postgres=#SELECT * FROM pg_catalog.pg_settings WHERE name = 'server_version'; #信息更全

2、查看有多少個數據庫及數據庫所屬編碼

postgres=# \l

3、查看字符集

postgres=# \encoding

4、查看數據庫的連接數量

postgres=# select datid,datname,pid,usename,state,client_addr,query from pg_stat_activity; #顯示更詳細

postgres=# SELECT COUNT(*) FROM pg_stat_activity; #匯總出數量

postgres=#show max_connections; #查看最大連接數

5、查詢當前的用戶

postgres=#select * from current_user;

postgres=# SELECT SESSION_USER;

postgres=# select * from pg_user; #查詢所有的用戶信息

6、查看數據庫運行的時間

postgres=# select pg_postmaster_start_time();

postgres=#SELECT age(now(), pg_postmaster_start_time()) AS uptime;#匯總出時間

7、查看當前用戶有多少個表

postgres=#SELECT tablename

FROM pg_catalog.pg_tables

WHERE schemaname != 'pg_catalog' AND schemaname != 'information_schema';

postgres=#SELECT tablename

FROM pg_catalog.pg_tables

WHERE schemaname = 'public'; #查看特定模式的表

8、表空間管理

postgres=# \db 

postgres=# SELECT pg_tablespace.spcname,

       pg_size_pretty(pg_tablespace_size(pg_tablespace.oid)) AS size

FROM pg_tablespace;

postgres=# select pg_size_pretty(pg_tablespace_size('pg_global'));#查詢表空間大小

postgres=# create tablespace test owner test location '/pgdb/data/test'; #創建表空間,/pgdb/data/test路徑得提前建好

postgres=# drop tablespace test; #刪除表空間

9、查看所有的schema

postgres=# select * from information_schema.schemata; #信息更全

postgres=# \dn

10、查看數據庫大小

postgres=# select pg_database.datname, pg_size_pretty (pg_database_size(pg_database.datname)) AS total_size from pg_database;

postgres=#SELECT      table_schema || '.' || table_name AS table_full_name,      pg_size_pretty(pg_total_relation_size('"' || table_schema || '"."' || table_name || '"')) AS size  FROM information_schema.tables  ORDER BY      pg_total_relation_size('"' || table_schema || '"."' || table_name || '"') DESC #顯示用戶

11、查看是否開啟歸檔日志

postgres=# show archive_mode;

postgres=# show archive_command ;

12、查看鎖信息

postgres=# SELECT * FROM pg_locks;

13、查看表結構

postgres=# \d students

postgres=#SELECT 

    column_name,

    data_type,

    character_maximum_length,

    is_nullable,

    column_default 

FROM

    information_schema.COLUMNS 

WHERE

    TABLE_NAME = 'students';

14、用戶管理

postgres=# create user test1  with password '123456';#創建用戶

postgres=# create user superwith password '123456' superuser;#創建超級管理員

postgres=# create schema test1  authorization  test1;#創建和用戶同名的 schema

postgres=# grant all on schema test1  to test1;#將 schema 的所有權限給用戶

postgres=# grant usage on schema test1  to test;#將schema 的所有權限給另外一個用戶

postgres=# ALTER TABLE my_table SET SCHEMA test1;修改schema

postgres=# alter user superwith password '123123';#\password  super也可以進行修改postgres=# alter user super  with nologin; #禁止用戶登錄

postgres=# drop owned bysuper;#刪除用戶

postgres=#DROP USER test;#刪除用戶

15、角色管理

postgres=# \du

postgres=# create role role2;#創建角色

postgres=#drop role role1; #刪除角色

16、數據庫管理

postgres=#CREATE DATABASE test; #創建

postgres=#DROP DATABASE test; #刪除

postgres=# \c test #切換數據庫

postgres=# \ds #查看當前數據庫序列

17、 表管理

postgres=#ANALYZE test; #分析表

postgres=#alter table test add c3 int; #新增字段

postgres=#alter table test drop c3 ;  #刪除字段

postgres=#alter table test alter column c3 type varchar(10); #更改字段

postgres=#\x #列模式顯示每個字段

18、索引管理

postgres=#REINDEX TABLE tablename;#重建索引

postgres=# \di #列出所有索引

postgres=#SELECT t.relname AS table_name,         i.relname AS index_name,         string_agg(a.attname,         ',') AS column_nameFROM pg_class t, pg_class i, pg_index ix, pg_attribute aWHERE t.oid = ix.indrelid        AND i.oid = ix.indexrelid        AND a.attrelid = t.oid        AND a.attnum = ANY(ix.indkey)        AND t.relkind = 'r'        AND t.relname NOT LIKE 'pg_%'GROUP BY  t.relname, i.relnameORDER BY  t.relname, i.relname;

18、檢查表的大小

postgres=#SELECT pg_size_pretty(pg_total_relation_size('tablename'));

19、數據庫啟停管理

[postgres@localhost ~]$ pg_ctl stop #停止[postgres@localhost ~]$ pg_ctl start #啟動

20、數據庫登錄

[postgres@localhost ~]$psql #未開啟密碼登錄驗證可以用此登錄

[postgres@localhost ~]$ psql -U postgres -p 5785 -d postgres -h 192.168.59.138

21、查看所有的 function

postgres=# \df

postgres=#SELECT proname, proargtypes, prosrc

FROM pg_proc;

22、查看數據庫擴展

postgres=# \dx

23、切換工作路徑

postgres=# \cd /pgdb #執行腳本時必需

24、會話管理

postgres=#\conninfo #查看當前會話連接信息

postgres=#\x #因為表字段非常多,通過終端查詢會重疊在一塊,比較難看清,需要開啟擴展顯示,和 MySQL \G 類似

postgres=#select*from pg_stat_activity where state !='idle';

postgres=# SELECT datname, usename, pid, client_hostname, backend_start, query_start, wait_event_type, STATE, backend_type FROM pg_stat_activity;#查看會話的狀態

postgres=#select now(),pid,client_addr,now()-query_start exec_time,query from pg_stat_activity where state ='active'and pid <> pg_backend_pid()and query_start < now()-'60 s'::interval order by query_start;#查詢超過60S的會話

test=#select pg_backend_pid(); #查看當前會話ID

25、 顯示 SQL 執行時間

postgres=#\timing

26、將查詢結果輸出到操作系統(Oracle spool 功能)

postgres=# \o test.txt select * from demo1; \o

27、執行 SQL 腳本

postgres=#\i test.sql

28、序列管理

postgres=# CREATE SEQUENCE snc_seq INCREMENT BY 1 START WITH 1 NO MAXvalue NO CYCLE CACHE 10; #創建序列postgres=#  select * from snc_seq ; #查看序列postgres=# select currval(' snc_seq '); #查看序列當前值postgres=# select nextval('snc_seq'); #獲取序列下一個值

29、與序列有關的表

postgres=# select * from pg_sequence;postgres=# select * from pg_sequences;postgres=# select * from information_schema.sequences;

30、查看 blocker

postgres=# SELECT datname, pid, usename, client_hostname, wait_event, STATE, query FROM pg_stat_activity WHERE pid IN (SELECT pid FROM pg_locks WHERE GRANTED<>'f' AND transactionid = (SELECT transactionid FROM pg_locks WHERE GRANTED= 'f'));

31、 查看膨脹高的 top 10 表

postgres=#SELECT relname AS TABLE_NAME, pg_size_pretty(pg_relation_size(schemaname||'.'||relname)) AS table_size, n_dead_tup, n_live_tup,(n_dead_tup * 100 / (n_live_tup + n_dead_tup))AS dead_tup_ratio FROM pg_stat_user_tables WHERE n_dead_tup<>0 LIMIT 10;

32、查看長事務

postgres=# SELECT extract(epoch FROM (clock_timestamp() - xact_start)) AS longtrans,extract(epoch FROM (clock_timestamp() - query_start)) AS longquery FROM pg_stat_activity WHERE 1=1 AND STATE <> 'idle' ;

33、當前數據庫TOP10大小的表

postgres=#SELECT relname, pg_relation_size('public."' || relname || '"')/1024/1024 AS MB, relkind FROM pg_class WHERE relnamespace IN (SELECT oid FROM pg_namespace WHERE nspname NOT IN ('pg_toast', 'pg_temp_1', 'pg_toast_temp_1', 'pg_catalog', 'information_schema')) AND relkind ='r' ORDER BY 2 DESC LIMIT 10 ;

34、查看當前數據庫top10對象

postgres=#SELECT relname, pg_relation_size('public."' || relname || '"')/1024/1024 AS MB, relkind FROM pg_class WHERE relnamespace IN (SELECT oid FROM pg_namespace WHERE nspname NOT IN ('pg_toast', 'pg_temp_1', 'pg_toast_temp_1', 'pg_catalog', 'information_schema')) ORDER BY 2 DESC LIMIT 10;

35、查看統計信息

postgres=#analyze students; #收集統計信息(分析表)

postgres=#vacuum students; # vacuum 表

postgres=#vacuum;# vacuum 數據庫

postgres=#vacuum full; # vacuum 回收空間,會鎖表

postgres=#SELECT schemaname,relname, n_live_tup, n_dead_tup, n_mod_since_analyze, last_analyze, last_autoanalyze FROM pg_stat_user_tables WHERE relname=’students’; # 查看統計信息

36、查看 SQL 執行計劃

postgres=#explain select * from students;postgres=#explain (analyze,verbose,costs,buffers,timing) select * from students;注意,analyze 會執行 SQL 。

37、查找PG堵塞

postgres=#SELECT blocked_locks.pid AS blocked_pid,         blocked_activity.usename AS blocked_user,         blocking_locks.pid AS blocking_pid,         blocking_activity.usename AS blocking_user,         blocked_activity.query AS blocked_statement,         blocking_activity.query AS current_statement_in_blocking_processFROM pg_catalog.pg_locks blocked_locksJOIN pg_catalog.pg_stat_activity blocked_activity    ON blocked_activity.pid = blocked_locks.pidJOIN pg_catalog.pg_locks blocking_locks    ON blocking_locks.locktype = blocked_locks.locktype        AND blocking_locks.database IS NOT DISTINCTFROM blocked_locks.database        AND blocking_locks.relation IS NOT DISTINCTFROM blocked_locks.relation        AND blocking_locks.page IS NOT DISTINCTFROM blocked_locks.page        AND blocking_locks.tuple IS NOT DISTINCTFROM blocked_locks.tuple        AND blocking_locks.virtualxid IS NOT DISTINCTFROM blocked_locks.virtualxid        AND blocking_locks.transactionid IS NOT DISTINCTFROM blocked_locks.transactionid        AND blocking_locks.classid IS NOT DISTINCTFROM blocked_locks.classid        AND blocking_locks.objid IS NOT DISTINCTFROM blocked_locks.objid        AND blocking_locks.objsubid IS NOT DISTINCTFROM blocked_locks.objsubid        AND blocking_locks.pid != blocked_locks.pidJOIN pg_catalog.pg_stat_activity blocking_activity    ON blocking_activity.pid = blocking_locks.pidWHERE NOT blocked_locks.granted;

38、查看當前執行的所有SQL語句

postgres=#SELECT    pid,    datname,    usename,    client_addr,    application_name,    STATE,    backend_start,    xact_start,    xact_stay,    query_start,    query_stay,    REPLACE ( query, chr( 10 ), ' ' ) AS query FROM    (    SELECT        pgsa.pid AS pid,        pgsa.datname AS datname,        pgsa.usename AS usename,        pgsa.client_addr client_addr,        pgsa.application_name AS application_name,        pgsa.STATE AS STATE,        pgsa.backend_start AS backend_start,        pgsa.xact_start AS xact_start,        EXTRACT ( epoch FROM ( now( ) - pgsa.xact_start ) ) AS xact_stay,        pgsa.query_start AS query_start,        EXTRACT ( epoch FROM ( now( ) - pgsa.query_start ) ) AS query_stay,        pgsa.query AS query     FROM        pg_stat_activity AS pgsa     WHERE        pgsa.STATE != 'idle'         AND pgsa.STATE != 'idle in transaction'         AND pgsa.STATE != 'idle in transaction (aborted)'     ) idleconnections ORDER BY    query_stay DESC;

39、殺掉某個數據庫的所有連接

postgres=#SELECT pg_terminate_backend(pg_stat_activity.pid)FROM pg_stat_activity WHERE datname='數據庫名稱' AND pid<>pg_backend_pid();

40、查詢延遲

postgres=#select application_name,client_addr,client_port,write_lag,replay_lag,sync_state from pg_stat_replication ;

41、查看占用空間TOP10的表

postgres=#SELECT schemaname    ,tablename    ,pg_size_pretty(pg_total_relation_size((quote_ident(schemaname) || '.' || quote_ident(tablename))::regclass))FROM pg_tablesORDER BY pg_total_relation_size((quote_ident(schemaname) || '.' || quote_ident(tablename))::regclass) DESC limit 10;

42、查詢更新和刪除記錄條數top 10的表

postgres=#SELECT schemaname    ,relname    ,n_tup_upd    ,n_tup_del    ,round(n_tup_hot_upd / (            CASE                 WHEN n_tup_upd = 0                    THEN 1.0                ELSE n_tup_upd::NUMERIC                END            ), 4)FROM pg_stat_all_tablesORDER BY n_tup_upd + n_tup_del DESC limit 10;

43、查詢插入記錄條數top 10的表

postgres=#SELECT schemaname    ,relname    ,n_tup_insFROM pg_stat_all_tablesORDER BY n_tup_ins DESC limit 10;

44、查看歸檔任務狀態

postgres=#select * from pg_stat_get_archiver();

45、查看數據庫的啟動時間

postgres=# select pg_postmaster_start_time();

46、查詢數據庫是否為備庫

postgres=# select pg_is_in_recovery();

47、查看表所在的數據文件

test=# select pg_relation_filepath('students');

48、查詢當前的最老事務距離當前時間、距離當前事務數, 說明膨脹空間大小, 越大可能導致越多膨脹垃圾

test=#SELECT * FROM pg_prepared_xacts;

49、長事務、prepared statement

test=#WITH aAS (    SELECT min(TRANSACTION::TEXT::int8) m    FROM pg_prepared_xacts    )    ,bAS (    SELECT txid_snapshot_xmin(txid_current_snapshot())::TEXT::int8 AS m    )    ,cAS (    SELECT min(least(backend_xid::TEXT::int8, backend_xmin::TEXT::int8)) m    FROM pg_stat_activity    )    ,dAS (    SELECT datname        ,usename        ,pid        ,query_start        ,xact_start        ,now()        ,wait_event        ,query    FROM pg_stat_activity    WHERE backend_xid IS NOT NULL        OR backend_xmin IS NOT NULL    ORDER BY least(backend_xid::TEXT::int8, backend_xmin::TEXT::int8) limit 1    )    ,eAS (    SELECT *    FROM pg_prepared_xacts    ORDER BY TRANSACTION::TEXT::int8 limit 1    )SELECT b.m - least(a.m, c.m)    ,d.*    ,e.*FROM a    ,b    ,c    ,dLEFT JOIN e ON (1 = 1);

50、查看WAL的空間占用大小

postgres=# select pg_size_pretty(sum(size)) from pg_ls_waldir();

djEvbXU5ekRaMEZXZF9XR0ZjVUZGMHZyUXpIS3lkQUlSbU0zdHB6ZmdSOUVLTmgtSmRIejFNeUtWcThOc3lSLUpmVE9OYkI3YldIMUY4bHBCS2ZmVmNIUVZfNl9ya2oxaXk1bVZqR01XNzhoSjQ9.jpg

文中的概念來源于互聯網,如有侵權,請聯系我刪除。

歡迎關注公眾號:小周的數據庫進階之路,一起交流數據庫、中間件和云計算等技術。如果覺得讀完本文有收獲,可以轉發給其他朋友,大家一起學習進步!感興趣的朋友可以加我微信,拉您進群與業界的大佬們一起交流學習。

原文來源:https://mp.weixin.qq.com/s/uPF2o8w4p1_yRgZp6UAozg

[我要糾錯]
文:宋聰喬&發表于江蘇
關鍵詞: 熱衷于 分享 各種 干貨 知識

來源:本文內容搜集或轉自各大網絡平臺,并已注明來源、出處,如果轉載侵犯您的版權或非授權發布,請聯系小編,我們會及時審核處理。
聲明:江蘇教育黃頁對文中觀點保持中立,對所包含內容的準確性、可靠性或者完整性不提供任何明示或暗示的保證,不對文章觀點負責,僅作分享之用,文章版權及插圖屬于原作者。

點個贊
0
踩一腳
0

您在閱讀:PostgreSQL日常運維命令總結分享

Copyright?2013-2024 JSedu114 All Rights Reserved. 江蘇教育信息綜合發布查詢平臺保留所有權利

蘇公網安備32010402000125 蘇ICP備14051488號-3技術支持:南京博盛藍睿網絡科技有限公司

南京思必達教育科技有限公司版權所有   百度統計

主站蜘蛛池模板: 日韩欧美一区二区在线观看 | 欧美不卡一区二区三区 | 国产成人成人一区二区 | 免费无遮挡十八污污网站 | 国产欧美日韩中文久久 | 在线免费观看亚洲 | 农村寡妇女人一级毛片 | 成年人的天堂 | 亚洲小视频在线 | 五月婷婷激情六月 | 亚洲va| 免费看片的网址 | 国产成人黄色在线观看 | 欧美丝袜足交 | 日日摸夜夜欧美一区二区 | 一边脱一边摸一边揉免费 | 成视频年人黄网站免费视频 | 日日射天天干 | 能看的黄色网址 | 97人人爽人人爽人人人爽 | 成人看片在线 | 亚洲韩国欧美一区二区三区 | 精品videoss另类日本 | 女bbbbxxxx毛片视频0 | 黄色在线免费网站 | 精品视频vs精品视频 | 亚洲另类自拍丝袜第1页 | 日本三级香港三级人妇网站 | 一级做性色a爰片久久毛片免费 | 欧美欧洲性色老头老妇 | 看一级黄色毛片 | 亚洲欧洲精品成人久久曰 | 美女免费黄网站 | 男18视频在线观看 | 又黄又www| 我想看一级毛片免费的 | 亚洲国产激情一区二区三区 | 波多野结衣在线中文字幕 | 在线国产片 | 欧美成人免费全部观看天天性色 | 看看免费a一片欧 |
最熱文章
最新文章
  • 阿里云上云鉅惠,云產品享最低成本,有需要聯系,
  • 卡爾蔡司鏡片優惠店,鏡片價格低
  • 蘋果原裝手機殼