最近工作中遇到pg数据库data文件夹大小达到32G,大致的排查流程如下:
1.首先查看是哪个文件或者那些文件比较大;
2.根据文件的名称找到对应的数据表a;
3.确认数据表a中数据实际上只有3000条左右,数据量没有这么大;
4.经过对实际业务场景排查,这个表a是用来记录数据库表数据变化的表,其他的表中数据发生增删改,表中的触发器都会插入一条数据到表a中;
5.平台会轮询这个表中的数据,并做出一些相应的处理;而且平台会定期删除表a中的数据;
6.由于整个系统的业务量不是很大,频繁进行数据操作的数据表只有表b,其对应的表a的数据没有实际作用,完全可以不需要触发器,故直接将表b中触发器删除,观察一天查看表a中的数据量基本上没有变化;
7.后来才知道虽然平台定期删除了表a中的数据,但是在数据库中并不会删除实际的数据,这也就是为什么表a文件那么大,但是实际的数据很小的原因;
8.备份data文件和表a的数据,将表a删除掉,然后重新建表a,把备份的数据导入到表a中,data文件的大小正常了,平台正常运行;
9.需要注意的是,pg创建数据库的时候,用的账号需要平台使用的账号一致,否则会出现平台没有权限操作表a;