5 |
5 |
6 |
6 |
7 class AnalyzeAllTool(toolbase.SimpleTool): |
7 class AnalyzeAllTool(toolbase.SimpleTool): |
8 def __init__(self): |
8 def __init__(self): |
9 toolbase.SimpleTool.__init__(self, name='analyzeall', desc='Analyze all tables.') |
9 toolbase.SimpleTool.__init__(self, name='analyzeall', desc='Analyze all tables.') |
10 self.parser.add_argument('-s', dest='schema', nargs='*', default=['public'], help='Schema filter') |
10 self.parser.add_argument('-s', dest='schema', nargs='*', help='Schema filter') |
11 self.parser.add_argument('--vacuum', action='store_true', help='Call VACUUM ANALYZE') |
11 self.parser.add_argument('--vacuum', action='store_true', help='Call VACUUM ANALYZE') |
12 self.parser.add_argument('--full', action='store_true', help='Call VACUUM FULL ANALYZE') |
12 self.parser.add_argument('--full', action='store_true', help='Call VACUUM FULL ANALYZE') |
13 self.init() |
13 self.init() |
14 |
14 |
15 def main(self): |
15 def main(self): |
16 browser = pgbrowser.PgBrowser(self.pgm.get_conn('target')) |
16 browser = pgbrowser.PgBrowser(self.pgm.get_conn('target')) |
17 |
17 |
18 query = 'ANALYZE %s;' |
18 query_pattern = 'ANALYZE %s.%s;' |
19 if self.args.vacuum: |
19 if self.args.vacuum: |
20 query = 'VACUUM ANALYZE %s;' |
20 query_pattern = 'VACUUM ANALYZE %s.%s;' |
21 if self.args.full: |
21 if self.args.full: |
22 query = 'VACUUM FULL ANALYZE %s;' |
22 query_pattern = 'VACUUM FULL ANALYZE %s.%s;' |
23 |
23 |
24 for schema in self.args.schema: |
24 schema_list = self.args.schema |
|
25 if not schema_list: |
|
26 schema_list = [schema['name'] for schema in browser.list_schemas() if not schema['system']] |
|
27 |
|
28 for schema in schema_list: |
25 tables = browser.list_tables(schema=schema) |
29 tables = browser.list_tables(schema=schema) |
26 with self.pgm.cursor('target') as curs: |
30 with self.pgm.cursor('target') as curs: |
27 for table in tables: |
31 for table in tables: |
28 print(query % table['name']) |
32 query = query_pattern % (schema, table['name']) |
29 curs.execute(query % table['name'], []) |
33 print(query) |
|
34 curs.execute(query, []) |
30 |
35 |
31 |
36 |
32 tool = AnalyzeAllTool() |
37 tool = AnalyzeAllTool() |
33 tool.main() |
38 tool.main() |
34 |
39 |