暂无图片
PostgreSQL确定未使用的表
我来答
分享
暂无图片 匿名用户
PostgreSQL确定未使用的表

如何确定pg库中,长时间未使用的表,想删除这些未使用的表释放磁盘空间,有什么的好的方案或者插件可使用?

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
yBmZlQzJ

要确定PostgreSQL数据库中长时间未使用的表并删除它们以释放磁盘空间,可以使用以下方案:

  1. 使用pg_stat_user_tables视图来获取每个表的最后访问时间。该视图包含有关每个用户表的统计信息,包括最后一次访问的时间戳。

  2. 编写一个脚本或存储过程,遍历所有用户表,并根据最后访问时间筛选出长时间未使用的表。你可以根据具体需求定义"长时间未使用"的时间阈值。

  3. 在确认要删除的表后,使用DROP TABLE语句逐个删除这些表。确保在执行此操作之前进行适当的备份,以防止意外删除了重要的数据。

下面是一个示例的PL/pgSQL存储过程,用于删除长时间未使用的表:

        

sql复制代码

CREATE OR REPLACE PROCEDURE delete_inactive_tables() LANGUAGE plpgsql; BEGIN -- 设置长时间未使用的时间阈值(单位:秒) DECLARE inactive_period INTERVAL := '1 year'; -- 可以根据需要进行调整 FOR table_name, last_accessed IN (SELECT table_name, last_accessed FROM pg_stat_user_tables) LOOP -- 检查表是否超过长时间未使用的时间阈值 IF last_accessed < NOW() - inactive_period THEN -- 输出将要删除的表名 RAISE NOTICE 'Deleting inactive table: %', table_name; -- 执行删除表的操作 EXECUTE 'DROP TABLE IF EXISTS ' || table_name || ' CASCADE'; END IF; END LOOP; END;

复制

请注意,在运行此存储过程之前,请务必备份数据库以防止意外删除重要数据。此外,根据你的实际需求和环境,你可能需要调整时间阈值或其他参数。

暂无图片 评论
暂无图片 有用 2
打赏 0
P
pgdba

可以参考下这个:

如何在 PostgreSQL 中检查未使用的索引

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
postgresql中delete数据怎么操作可以释放磁盘空间?
回答 1
已采纳
可以了解下vacuum和vacuumfull的功能,他可以帮助你。英文文档:http://postgres.cn/docs/12/sqlvacuum.html中文文档:http://postgres.
pg中在sql中如何使用hint的?
回答 3
pghintplan
pg主库基础数据2T,搭建从库环境时,用pg-basebackup完成基础备份后从库无法启动,日志提示丢失wal归档日志
回答 2
按照他的提示丢失的目录和文件是不是都正确?以及权限都对不对?
postgresql 支持ignore nulls吗?
回答 1
SQL标准为lead、lag、firstvalue、lastvalue和nthvalue定义了一个RESPECTNULLS或IGNORENULLS选项。&nbsp;这在PostgreSQL中没有实现
POSTGRESQL有什么办法能看外部表的大小?
回答 1
已采纳
在数据目录执行du命令duh/var/lib/pgsql/13/data/base
postgreSQL 数据库崩溃了不能启动,日志显示invalid record length at 0/F43F3C8: wanted 24, got 0, 怎么解决?
回答 1
可能遇到了WAL(WriteAheadLog)损坏的问题。这可能是由于硬件故障、操作系统崩溃或其他原因导致的。可以尝试使用pgresetxlog命令来重置WAL并恢复数据库,这个命令会丢失所有未提交的
wal_level 的疑问
回答 2
你的理解是正确的
postgreSQL 批量插入数据的时候,有没有好的办法查重?
回答 2
试一下:SELECTcolumn1,column2,COUNT()FROMyourtablenameGROUPBYcolumn1,column2HAVINGCOUNT()&gt;1;详见:https:
pg的流复制环境下,为啥备库中的pg_stat_all_tables的字段vacuum 和 analyze 都没有值,显示空呢??
回答 2
检查一下备库的hotstandbyfeedback参数是否为off,该参数控制备库是否向主库发送反馈信息,以便主库可以更新其统计信息。另外可以在备库手工执行VACUUM和ANALYZE命令,观察一下是
pg_rman-1.3.9-1.pg12.rhel7.x86_64 求一个
回答 1
上传附件:pgrman1.3.91.pg12.rhel7.x8664.rpm
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~