主頁 > 資料庫 > 輕松拿下PostgreSQL,這30個實用SQL陳述句你細品

輕松拿下PostgreSQL,這30個實用SQL陳述句你細品

2023-04-24 09:17:41 資料庫

引言

PostgreSQL是一款功能非常強大的開源關系型資料庫,它支持哈希索引、反向索引、部分索引、Expression 索引、GiST、GIN等多種索引模式,同時可安裝功能豐富的擴展包,相較于Mysql,PostgreSQ支持通過PostGIS擴展支持地理空間資料、支持嵌套回圈,哈希連接,排序合并三種表連接方式等一系列的強化功能,本文主要整理總結了30個實用SQL,方便大家可以高效利用PostgreSQL,

 

一、資料庫連接

1、獲取資料庫實體連接數

select count(*) from pg_stat_activity;

 

2、獲取資料庫最大連接數

show max_connections

 

3、查詢當前連接數詳細資訊

select * from pg_stat_activity;

 

4、查詢資料庫中各個用戶名對應的資料庫連接數

select usename, count(*) from pg_stat_activity group by usename;

 

二、賦權操作

1、為指定用戶賦予指定表的select權限

GRANT SELECT ON table_name TO username;

 

2、修改資料庫表所屬的ownner

alter table table_name owner to username;

 

3、授予指定用戶指定表的所有權限

grant all privileges on table product to username;

 

4、授予指定用戶所有表的所有權限

GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO username;

 

三、資料庫表或者索引

1、獲取資料庫表中的索引

select * from pg_indexes where tablename = 'product';

 

2、獲取當前db中所有表資訊

select * from pg_tables;

 

3、查詢資料庫安裝了哪些擴展

select * from pg_extension;

 

4、查詢資料庫中的所有表及其描述

select relname as TABLE_NAME ,col_description(c.oid, 0) as COMMENTS from pg_class c where relkind = 'r' and relname not like 'pg_%' and relname not like 'sql_%'

 

四、獲取資料大小

1、查詢執行資料庫大小

select pg_size_pretty (pg_database_size('db_product'));

 

2、查詢資料庫實體當中各個資料庫大小

select datname, pg_size_pretty (pg_database_size(datname)) AS size from pg_database;

 

3、查詢單表資料大小

select pg_size_pretty(pg_relation_size('product')) as size;

 

4、查詢資料庫表包括索引的大小

select pg_size_pretty(pg_total_relation_size('table_name')) as size;

 

5、查看表中索引大小

select pg_size_pretty(pg_indexes_size('product'));

 

6、獲取各個表中的資料記錄數

select relname as TABLE_NAME, reltuples as rowCounts from pg_class where relkind = 'r' order by rowCounts desc

 

7、查看資料庫表對應的資料檔案

select pg_relation_filepath('product');

 

五、資料庫分析

1、查看資料庫實體的版本

select version();

 

2、查看最新加載配置的時間

select pg_conf_load_time();

 

3、查看當前wal的buffer中有多少位元組未寫入磁盤

select pg_xlog_location_diff(pg_current_xlog_insert_location(),pg_current_xlog_location());

 

4、查詢最耗時的5個sql

select * from pg_stat_statements order by total_time desc limit 5;

備注:需要開啟pg_stat_statements

 

5、獲取執行時間最慢的3條SQL,并給出CPU占用比例


SELECT substring(query, 1, 1000) AS short_query,
round(total_time::numeric, 2) AS total_time,
calls,
round((100 * total_time / sum(total_time::numeric) OVER ())::numeric, 2) AS percentage_cpu
FROM pg_stat_statements
ORDER BY total_time DESC
LIMIT 3;

 

6、分析評估SQL執行情況

EXPLAIN ANALYZE SELECT * FROM product

 

7、查看當前長時間執行卻不結束的SQL

select 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.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 
limit 5;

 

8、查出使用表掃描最多的表

select * from pg_stat_user_tables where n_live_tup > 100000 and seq_scan > 0 order by seq_tup_read desc limit 10;

 

9、查詢讀取buffer最多的5個SQL

select * from pg_stat_statements order by shared_blks_hit+shared_blks_read desc limit 5;

 

10、獲取資料庫當前的回滾事務數以及死鎖數

select datname,xact_rollback,deadlocks from pg_stat_database

 

11、查詢訪問指定表的慢查詢

select * from pg_stat_activity where query ilike '%<table_name>%' and query_start - now() > interval '10 seconds';

 

六、資料庫備份(非SQL)

1、備份postgres庫并tar打包

pg_dump -h 127.0.0.1 -p 5432 -U postgres -f postgres.sql.tar -Ft

 

2、備份postgres庫,轉儲資料為帶列名的INSERT命令

pg_dumpall -d postgres -U postgres -f postgres.sql --column-inserts

 

總結

本文主要針對PostgreSQL資料庫中在日常開發中比較常用的SQL進行了分類的總結,那么大家日常開發作業中,可以在分析資料庫性能、資料庫連接情況、sql執行情況等資料庫分析方面都有對應的SQL陳述句來進行支撐,

 

作者丨夢堯技術

本文來自博客園,作者:古道輕風,轉載請注明原文鏈接:https://www.cnblogs.com/88223100/p/PostgreSQL-30-practical-SQL-statements.html

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/551007.html

標籤:其他

上一篇:kafka設計理念決議

下一篇:返回列表

標籤雲
其他(157969) Python(38094) JavaScript(25389) Java(17988) C(15215) 區塊鏈(8259) C#(7972) AI(7469) 爪哇(7425) MySQL(7140) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4558) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2430) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1959) Web開發(1951) HtmlCss(1923) python-3.x(1918) 弹簧靴(1913) C++(1910) xml(1889) PostgreSQL(1873) .NETCore(1854) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • 輕松拿下PostgreSQL,這30個實用SQL陳述句你細品

    PostgreSQL是一款功能非常強大的開源關系型資料庫,它支持哈希索引、反向索引、部分索引、Expression 索引、GiST、GIN等多種索引模式,同時可安裝功能豐富的擴展包。相較于Mysql,PostgreSQ支持通過PostGIS擴展支持地理空間資料、支持嵌套回圈,哈希連接,排序合并三種表... ......

    uj5u.com 2023-04-24 09:17:41 more
  • kafka設計理念決議

    一.引言 kafka是廣泛使用的流處理組件,我們知道怎么使用它,也知道它的實作原理。但是更重要的部分是它的設計理念,即kafka設計者當時是如何考量各種方案的,了解這些,對提升我們的設計能力非常有幫助。 二.動機 我們將 Kafka 設計為一個統一平臺,來處理大型公司可能擁有的所有實時資料流。 為此 ......

    uj5u.com 2023-04-24 09:07:02 more
  • oracle邏輯備份exp匯出指定表名時需要加括號嗎?

    Oracle 的exp、imp、expdp、impdp命令用于資料庫邏輯備份與恢復; exp命令用于把資料從遠程資料庫server匯出至本地,生成dmp檔案。 筆者在實操中遇到: $exp user/pass file=exp.dmp tables = (TABLE1,TABLE3,TABLE3) ......

    uj5u.com 2023-04-24 09:01:52 more
  • 讀《mysql是怎樣運行的》有感

    最近讀了一本書《mysql是怎樣運行的》,讀完后在大體上對mysql的運行有一定的了解。在以前,我對mysql有以下的為什么: InnoDB中的表空間、段、區和頁是什么? redo log為什么就能實作事務的持久性? 到底什么是意向鎖?意向鎖有什么用? mysql中的外連接、內連接到底是什么? 事務 ......

    uj5u.com 2023-04-24 09:01:49 more
  • 《Redis設計與實作》讀書筆記

    《Redis設計與實作》讀書筆記 簡單動態字串 SDS的定義 結構: buf陣列:用于保存字串 len屬性:記錄SDS中保存字串的長度 free屬性:記錄buf中未使用位元組數量 遵循C字串以空字串結尾的慣例,保存空字串的位元組不計入長度 SDS與C字串的區別 常數復雜度獲取字串長度 因 ......

    uj5u.com 2023-04-24 09:01:39 more
  • 袋鼠云春季生長大會圓滿落幕,帶來數實融合下的新產品、新方案、新

    4月20日,以“數實融合,韌性生長”為主題的袋鼠云春季生長大會圓滿落幕。 在春季生長大會中,袋鼠云帶來了數實融合趨勢下的最新行業沉淀、最佳實踐經驗和行業前瞻性的產品發布。從大資料基礎軟體“數堆疊”、到低代碼數字孿生世界“易知微”,再到可觀測運維專家“云掣”,為廣大用戶帶來了一場場精彩內容,共話數字未來 ......

    uj5u.com 2023-04-24 09:00:57 more
  • 無懼百萬級并發,GaussDB(for Cassandra)讓華為推送服務更快觸達

    摘要:推送服務(Push Kit)是華為提供的訊息推送平臺,建立了從云端到終端的訊息推送通道。通過集成推送服務,您可以向客戶端應用實時推送訊息,讓應用更精準觸達用戶,是開發者提升用戶感知度和活躍度的一件利器。 本文分享自華為云社區《無懼百萬級并發,GaussDB(for Cassandra)讓華為P ......

    uj5u.com 2023-04-24 09:00:33 more
  • mysql+proxysql+replication-manager的主從半同步復制+高可用+讀

    環境: AlmaLinux release 9.1 MySQL Community Server Ver 8.0.33 Replication Manager v2.2.40 for MariaDB 10.x and MySQL 5.7 Series ProxySQL version 2.5.1-9 ......

    uj5u.com 2023-04-24 09:00:18 more
  • 華為云GaussDB支撐華為MetaERP系統全面替換

    摘要:目前MetaERP已經覆寫了華為公司100%的業務場景和80%的業務量。 本文分享自華為云社區《強渡大渡河!華為云GaussDB支撐華為MetaERP系統全面替換》,作者: 華為云頭條。 近日,在“英雄強渡大渡河”MetaERP表彰會上,華為宣布實作自主可控的MetaERP研發,并完成對舊ER ......

    uj5u.com 2023-04-24 09:00:07 more
  • 詳解Redis三大集群模式,輕松實作高可用!

    Redis集群是一種通過將多個Redis節點連接在一起以實作高可用性、資料分片和負載均衡的技術。它允許Redis在不同節點上同時提供服務,提高整體性能和可靠性。根據搭建的方式和集群的特性,Redis集群主要有三種模式:主從復制模式(Master-Slave)、哨兵模式(Sentinel)和Clust... ......

    uj5u.com 2023-04-24 08:59:53 more