bigtables.py
changeset 101 2a2d0d5df03b
parent 100 d6088dba8fea
child 102 fda45bdfd68d
--- a/bigtables.py	Tue May 06 18:37:41 2014 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,49 +0,0 @@
-#!/usr/bin/env python3
-
-from pgtoolkit import pgbrowser, toolbase
-from pycolib.prettysize import prettysize_short
-from pycolib.ansicolor import highlight
-
-
-class BigTablesTool(toolbase.SimpleTool):
-    def __init__(self):
-        toolbase.SimpleTool.__init__(self, name='bigtables', desc='List largest tables.')
-        self.parser.add_argument('-n', '--limit', metavar='NUM', dest='limit', type=int, default=5, help='Show NUM biggest tables.')
-        self.parser.add_argument('-v', '--details', dest='details', action='store_true', help='Show sizes of data and individual indexes.')
-        self.init()
-
-    def main(self):
-        browser = pgbrowser.PgBrowser(self.pgm.get_conn('target'))
-
-        # scan all tables from all shemas, remember names and sizes
-        all_tables = []
-        all_indexes = []
-        schemas = browser.list_schemas()
-        for schema in schemas:
-            tables = browser.list_tables(schema['name'])
-            for table in tables:
-                table_name = '%s.%s' % (schema['name'], table['name'])
-                indexes = browser.list_indexes(table['name'], schema['name'])
-                for index in indexes:
-                    all_indexes.append({'name': index['name'], 'table': table_name, 'size': index['size']})
-                all_tables.append({'name': table_name, 'size': table['size'], 'indexes': indexes})
-
-        # print names and sizes of 20 largest tables
-        for table in sorted(all_tables, reverse=True, key=lambda x: x['size'])[:self.args.limit]:
-            size_of_indexes = sum(index['size'] for index in table['indexes'])
-            print(highlight(1) + prettysize_short(table['size'] + size_of_indexes, trailing_zeros=True).rjust(8) + highlight(0),
-                  '(total)'.ljust(8),
-                  highlight(1) + table['name'] + highlight(0), sep='  ')
-            if self.args.details:
-                print(prettysize_short(table['size'], trailing_zeros=True).rjust(8),
-                      '(data)'.ljust(8), sep='  ')
-                for index in sorted(table['indexes'], reverse=True, key=lambda x: x['size']):
-                    print(prettysize_short(index['size'], trailing_zeros=True).rjust(8),
-                          '(index)'.ljust(8), index['name'], sep='  ')
-            print()
-
-
-if __name__ == '__main__':
-    tool = BigTablesTool()
-    tool.main()
-