#!/usr/bin/perl -w use strict; use FS::UID qw(adminsuidsetup dbh); use FS::Schema qw(dbdef); use FS::Record; #why is this necessary adminsuidsetup shift or die "usage: pg-sizer user"; my $verbose = 1; my %size = (); my %prettysize = (); foreach my $table ( dbdef->tables ) { warn "sizing $table...\n" if $verbose; my $sth = dbh->prepare("SELECT pg_total_relation_size('$table')") or die dbh->errstr; $sth->execute or die $sth->errstr; my $size = $sth->fetchrow_arrayref->[0]; $size{$table} = $size; my $psth = dbh->prepare("SELECT pg_size_pretty( $size )") or die dbh->errstr; $psth->execute or die $psth->errstr; my $prettysize = $psth->fetchrow_arrayref->[0]; $prettysize{$table} = $prettysize; warn "$table: $prettysize{$table}\n" if $verbose; } foreach my $table ( reverse sort { $size{$a} <=> $size{$b} } keys %size ) { #print "$table: $size{$table}\n"; print "$table: $prettysize{$table}\n"; }