开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, OceanBase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,可以解决你的问题。加群请联系 liuaustin3 ,(共2720人左右 1 + 2 + 3 + 4 +5 + 6 + 7 + 8 +9)(1 2 3 4 5 6 7群均已爆满,,开8群200+ 9群)


正文:
我一直有一个错觉,大家的POSTGRESQL的技术都非常了得,在年前实际上对我有几次的感触。
1 不会装POSTGRESQL 的人有的是
2 基本概念和理解不明白的有的是
3 对于POSTGRESQL 来说,MYSQL 的确是曾经非常的热,至少MYSQL的一些白痴问题,问的人比较少
OK 既然如此,也不能天天高大上,咱们也的有接地气的,今天就奉送大量的PostgreSQL的脚本给一些初学者
1 查询数据库信息
SELECT
pg_database.datname AS database_name,
pg_size_pretty(pg_database_size(pg_database.datname)) AS size
FROM
pg_database;复制
database_name | size
-----------------------------------+---------
postgres | 7925 kB
template1 | 7957 kB
template0 | 7769 kB
rddsadd | 8005 kB
SaasCenter1 | 46 GB
serverNew | 2025 MB
IterativeDev | 8101 kB复制
2 表查询索引大小的信息
SELECT
t.relname AS table_name,
pg_size_pretty(pg_indexes_size(t.oid)) AS index_size
FROM
pg_class t
JOIN
pg_namespace n ON n.oid = t.relnamespace
WHERE
n.nspname NOT IN ('pg_catalog', 'information_schema')
AND t.relkind = 'r' -- 只选择普通表
ORDER BY
pg_indexes_size(t.oid) DESC;复制
table_name | index_size
--------------------------------------------+------------
sysd_log | 2314 MB
bizd_sc | 2121 MB
bizd_bs | 1736 MB
bizd_ts_payway | 1718 MB
bizd_ts | 1372 MB
kcd_ksc_bak | 1115 MB
bizd_ss | 1080 MB复制
3 索引和表之间的关系,索引占多大
SELECT
t.relname AS table_name,
pg_size_pretty(pg_total_relation_size(t.oid)) AS total_size,
pg_size_pretty(pg_relation_size(t.oid)) AS table_size,
pg_size_pretty(pg_indexes_size(t.oid)) AS index_size
FROM
pg_class t
JOIN
pg_namespace n ON n.oid = t.relnamespace
WHERE
n.nspname NOT IN ('pg_catalog', 'information_schema')
AND t.relkind = 'r' -- 只选择普通表
ORDER BY
pg_total_relation_size(t.oid) DESC;复制
table_name | total_size | table_size | index_size
--------------------------------------------+------------+------------+------------
bizd_sc | 9153 MB | 7031 MB | 2121 MB
sysd_log | 7648 MB | 5305 MB | 2314 MB
bizd_bs | 4223 MB | 2487 MB | 1736 MB
kcd_ksc_bak | 3918 MB | 2802 MB | 1115 MB
bizd_ts | 2951 MB | 1579 MB | 1372 MB
bizd_ts_payway | 2845 MB | 1127 MB | 1718 MB
bizd_sc_set_meal | 2453 MB | 1514 MB | 939 MB
bizd_ss | 2193 MB | 1113 MB | 1080 MB
bizd_ts_expansion | 1777 MB | 844 MB | 933 MB复制
4 每个数据库下的不同OBJECTS 的用户权限
SELECT
d.datname AS database_name,
u.usename AS username,
pg_catalog.has_database_privilege(u.usename, d.datname, 'CONNECT') AS can_connect,
pg_catalog.has_database_privilege(u.usename, d.datname, 'CREATE') AS can_create,
pg_catalog.has_database_privilege(u.usename, d.datname, 'TEMP') AS can_use_temp
FROM
pg_database d
CROSS JOIN
pg_user u
ORDER BY
d.datname, u.usename;复制
database_name | username | can_connect | can_create | can_use_temp
-----------------------------------+--------------------+-------------+------------+--------------
Devops | alicloud_rds_admin | t | t | t
Devops | aurora | t | t | t
Devops | cy7_read | t | f | t复制
schema_name | object_name | object_type | grantee | can_select | can_insert | can_update | can_delete | can_truncate | can_references | can_trigger
-------------+------------------------+-------------+---------------------------+------------+------------+------------+------------+--------------+----------------+-------------
public | order | r | alicloud_rds_admin | SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER
public | order | r | aurora | SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER
public | order | r | read | SELECT | | | | | |
public | order | r | center_service | SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER
public | order | r | devops_rw | | | | | | |
public | order | r | dp | | | | | | |
public | order | r | saascenter | SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER
public | order | r | terminal_rw | | | | | | |
public | order | r | user | | | | | | |
public | order | r | dba_admin | SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER
public | order | r | pg_execute_server_program | | | | | | |
public | order | r | pg_monitor | | | | | | |
public | order | r | pg_rds_superuser | SELECT | INSERT | UPDATE | DELETE | TRUNCATE | REFERENCES | TRIGGER
public | order | r | pg_read_all_settings | | | | | | |
public | order | r | pg_read_all_stats | | | | | | |
public | order | r | pg_read_server_files | | | | | | |
public | order | r | pg_signal_backend | | | | | | |
public | order | r | pg_stat_scan_tables | | | | | | |
public | order | r | pg_write_server_files | | | | | | |复制
5 拼接出当前表的create table 语句
WITH column_info AS (
SELECT
a.attname AS column_name,
pg_catalog.format_type(a.atttypid, a.atttypmod) AS data_type,
CASE
WHEN a.attnotnull THEN ' NOT NULL'
ELSE ''
END AS not_null,
pg_catalog.array_to_string(ARRAY(
SELECT conname
FROM pg_catalog.pg_constraint c
WHERE c.conrelid = a.attrelid AND a.attnum = ANY(c.conkey) AND c.contype IN ('p', 'u')
), ', ') AS constraints
FROM
pg_catalog.pg_attribute a
WHERE
a.attrelid = 'your_table_name'::regclass AND a.attnum > 0 AND NOT a.attisdropped
)
SELECT
'CREATE TABLE your_table_name (' || STRING_AGG(column_name || ' ' || data_type || not_null ||
CASE WHEN constraints IS NOT NULL THEN ' CONSTRAINT ' || constraints ELSE '' END, ', ') || ');' AS create_statement
FROM
column_info;复制

6 分析数据库中的表1天未进行
SELECT
relname AS table_name,
last_autovacuum,
last_autoanalyze
FROM
pg_stat_all_tables
WHERE
last_autovacuum < NOW() - interval '1 day'
AND schemaname NOT IN ('pg_catalog', 'information_schema');复制

7 分析PostgreSQL shared buffer 的内存使用情况 需要加载 create extension pg_buffercache
cy7SaasCenter1=> WITH buffer_info AS (
cy7SaasCenter1(> SELECT
cy7SaasCenter1(> pg_buffercache.*,
cy7SaasCenter1(> CASE
cy7SaasCenter1(> WHEN pg_buffercache.relfilenode IS NOT NULL THEN 't'
cy7SaasCenter1(> ELSE 'f'
cy7SaasCenter1(> END AS used
cy7SaasCenter1(> FROM
cy7SaasCenter1(> pg_buffercache
cy7SaasCenter1(> )
cy7SaasCenter1-> SELECT
cy7SaasCenter1-> COUNT(*) AS total_blocks,
cy7SaasCenter1-> COUNT(*) FILTER (WHERE used = 't') AS used_blocks,
cy7SaasCenter1-> COUNT(*) FILTER (WHERE used = 'f') AS free_blocks,
cy7SaasCenter1-> (COUNT(*) FILTER (WHERE used = 't') * current_setting('block_size')::numeric 1024 1024) AS used_blocks_mb, -- 计算已使用块的 MB
cy7SaasCenter1-> (COUNT(*) FILTER (WHERE used = 'f') * current_setting('block_size')::numeric 1024 1024) AS free_blocks_mb -- 计算空闲块的 MB
cy7SaasCenter1-> FROM
cy7SaasCenter1-> buffer_info;
total_blocks | used_blocks | free_blocks | used_blocks_mb | free_blocks_mb
--------------+-------------+-------------+----------------------+------------------------
121809 | 121809 | 0 | 951.6328125000000000 | 0.00000000000000000000
(1 row)复制
8 分析每个POSTGRESQL 子进程的内存使用情况
#!/bin/bash
psql -d your_database_name -c "SELECT pid FROM pg_stat_activity WHERE state = 'active';" -t | while read pid; do
ps -o pid,vsz,rss,comm -p $pid
done复制
9 分析每个POSTGRESQL 子进程的CPU使用情况
#!/bin/bash
# 查询当前活动连接并提取 PID
pids=$(psql -d your_database_name -c "SELECT pid FROM pg_stat_activity WHERE state = 'active';" -t)
# 遍历所有 PID 并获取对应的 CPU 使用情况
for pid in $pids; do
ps -o pid,%cpu,comm -p $pid
done复制
置顶
辩论中 DeepSeek 竟然可以安慰我?我替AI 送上一句 Shame on you !人类
云原生数据库砸了 K8S云自建数据库的饭碗--- CXL内存技术
临时工:数据库人生路,如何救赎自己 -- 答某个迷茫DBA的职业咨询
开源软件是心怀鬼胎的大骗局 -- 开源软件是人类最好的正能量 --- 一个人的辩论会
PolarDB 相关文章
“PostgreSQL” 高性能主从强一致读写分离,我行,你没戏!
POLARDB 添加字段 “卡” 住---这锅Polar不背
PolarDB 版本差异分析--外人不知道的秘密(谁是绵羊,谁是怪兽)
PolarDB 答题拿-- 飞刀总的书、同款卫衣、T恤,来自杭州的Package(活动结束了)
PolarDB for MySQL 三大核心之一POLARFS 今天扒开它--- 嘛是火星人
PolarDB-MySQL 并行技巧与内幕--(怎么薅羊毛)
PolarDB 并行黑科技--从百套MySQL撤下说起 (感谢8018个粉丝的支持)
PolarDB 杀疯了,Everywhere Everytime Everydatabase on Serverless
POLARDB 从一个使用者的角度来说说,POALRDB 怎么打败 MYSQL RDS
PolarDB 最近遇到加字段加不上的问题 与 使用PolarDB 三年感受与恳谈
PolarDB 从节点Down机后,引起的主从节点强一致的争论
PolarDB serverless 真敢搞,你出圈了你知道吗!!!!
PolarDB VS PostgreSQL "云上"性能与成本评测 -- PolarDB 比PostgreSQL 好?
临时工访谈:PolarDB Serverless 发现“大”问题了 之 灭妖记 续集
临时工访谈:庙小妖风大-PolarDB 组团镇妖 之 他们是第一
POLARDB -- Ausitndatabases 历年的文章集合
PolarDB for PostgreSQL 有意思吗?有意思呀
PostgreSQL 相关文章
“PostgreSQL” 高性能主从强一致读写分离,我行,你没戏!
全世界都在“搞” PostgreSQL ,从Oracle 得到一个“馊主意”开始
PostgreSQL 加索引系统OOM 怨我了--- 不怨你怨谁
PostgreSQL “我怎么就连个数据库都不会建?” --- 你还真不会!
PostgreSQL 稳定性平台 PG中文社区大会--杭州来去匆匆
PostgreSQL 分组查询可以不进行全表扫描吗?速度提高上千倍?
POSTGRESQL --Austindatabaes 历年文章整理
PostgreSQL 查询语句开发写不好是必然,不是PG的锅
跟我学OceanBase4.0 --阅读白皮书 (OB分布式优化哪里了提高了速度)
跟我学OceanBase4.0 --阅读白皮书 (4.0优化的核心点是什么)
跟我学OceanBase4.0 --阅读白皮书 (0.5-4.0的架构与之前架构特点)
跟我学OceanBase4.0 --阅读白皮书 (旧的概念害死人呀,更新知识和理念)
MongoDB 相关文章
MongoDB 大俗大雅,上来问分片真三俗 -- 4 分什么分
MongoDB 大俗大雅,高端知识讲“庸俗” --3 奇葩数据更新方法
MongoDB 大俗大雅,高端的知识讲“通俗” -- 2 嵌套和引用
MongoDB 大俗大雅,高端的知识讲“低俗” -- 1 什么叫多模
MongoDB 合作考试报销活动 贴附属,MongoDB基础知识速通
MongoDB 使用网上妙招,直接DOWN机---清理表碎片导致的灾祸 (送书活动结束)
数据库 《三体》“二向箔” 思维限制 !8个公众号联合抽奖送书 建立数据库设计新思维
MongoDB 是外星人,水瓶座,怎么和不按套路出牌的他沟通?
没有谁是垮掉的一代--记 第四届 OceanBase 数据库大赛
阿里云系列
阿里云数据库产品权限设计缺陷 ,六个场景诠释问题,你可以做的更好?
阿里云数据库--市场营销聊胜于无--3年的使用感受与反馈系列
阿里云数据库产品 对内对外一样的卷 --3年阿里云数据库的使用感受与反馈系列
阿里云数据库使用感受--客户服务问题深入剖析与什么是廉价客户 --3年的使用感受与反馈系列
阿里云数据库使用感受--操作界面有点眼花缭乱 --3年的使用感受与反馈系列
