Pg数据库日常维护操作指南_pg数据库维护

 #查看指定表的大小 
 select pg_relation_size('table_name')/1024^3  as "SIZE G"; 
 
 #查看所有表的大小
 \d+
 
 # 文件路径
 select pg_relation_filepath('table_name');

查看死亡元组和事务数量河相关的一些命令

#查看当前每个进程的信息
SELECT * FROM pg_stat_activity;
SELECT count(*) FROM pg_stat_activity where state = 'active';

#当前镜像
 SELECT txid_current_snapshot();
 
#查看死亡元组
select *  from pg_stat_all_tables ORDER BY n_dead_tup limit 10; 
select *  from pg_stat_user_tables ORDER BY n_dead_tup limit 20; 

#查看活着和死亡元组
SELECT schemaname,relname,n_live_tup,n_dead_tup, last_autovacuum, last_analyze,last_autoanalyze FROM pg_stat_user_tables  where relname='table_name' ORDER BY n_dead_tup;

分析自动清理的阈值计算

系统每隔 autovacuum_naptime秒尝试在每个数据库中启动一个工作者,如果你有N个数据库就会有多个工作者,数据库会每隔autovacuum_naptime/N创建一个工作者,同一时间内最多允许autovacuum_max_workers个工作者,工作者是一个独立的进程,并不会影响到连接数,如果数据库的数量超过了autovacuum_max_workers那么当一个数据库清理完成之后,会立马清理未清理的数据库,这有点像线程池哈哈。如果某个表太大占用了太多时间,导致其他表无无法清理,当其他数据库的工作者清理完之后,会来清理这个数据库的其他未清理的表,工作者会避免做重复的工作,已经被清理的表不会再次经理,对一个数据库所拥有的最大工作者数量并没有限制,简单理解这个参数是针对这个进程的,不是某个单独的数据库的,工作者进程在执行清理前会检查每个表在合适的时间执行VACUUM和ANALYZE,可以配置 log_autovacuum_min_duration来监听自动清理者的工作活动。当relfrozenxid值比autovacuum_freeze_max_age事务更大的表会被清理,如果废弃的元祖超过阈值表也会被清理。
失效的元祖数量会统计信息收集器里面获得,它是通过更新和删除命令更新的半准确的计数(它是半准确的,原因是在高负载情况下某些信息会丢失)。另一种情况是当relfrozenxid比vacuum_freeze_table_age旧事务id大的时候,执行vacuum冻结表的旧元祖增加relfrozenxid,否则只对上次执行过vacuum的表进行扫描。分析阈值也是类似,该阈值将与上次被ANALYZE分析的新增删除和修改的元祖进行比较。分区表不能被自动清理,要统计和收集数据必须手动执行命令。

#清理阈值 = 清理基本阈值 + 清理缩放系数 * 元组数
vacuum threshold = vacuum base threshold + vacuum scale factor * number of tuples
#分析阈值 = 分析基本阈值 + 分析缩放系数 * 元组数
analyze threshold = analyze base threshold + analyze scale factor * number of tuples

小插曲count(*)和count(1)

很多时候我都认为count(*)就是统计一行不展开数据直到我看到mysql文档当中写到:
InnoDB handles SELECT COUNT(*) and SELECT COUNT(1) operations in the same way. There is no performance difference.
从官网的角度来看COUNT(expr)是一个函数,参数是一个表达式,那么可以认为只要不是一个非空的数都可以,反正他是统计记录行,不是统计记录列。统计记录列还要判断是否非空,判断行就简单了,但是这是在有主键索引的情况下哈。

select proname, pronargs, prosrc from pg_proc where proname='count';


如上参考的是pg的数据库count函数,意思类似,这查看函数的功能太友好了!

总结

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!**

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值