我有几个PostgreSQL表(9.1),经常插入/删除。 随着时间的推移,即使autovacuum被configuration并定期运行,他们也会受到指数膨胀的困扰。
我正在考虑在这些表上自动化REINDEX。 将不会有人物理访问数据库,因为软件将被安装在客户端,并且应该会运行多年。
我一直在阅读“cron作业”,但是我错过了一些关于如何最好地设置它的指南或教程,特别是在Windows环境中。
有人能指点我正确的方向吗? 欢迎提出其他build议,但主要要求是不需要任何手动操作。
Windows有他们内置的任务计划程序 ,虽然function有限,但可能适合你。 如果您需要更多configuration的东西,我已经与Visual Cron好运了。 也就是说,在你的情况下,我希望尽可能在盒子上使用未知的/未经testing的/第三方软件,所以如果你能使本地的任务计划程序工作,这可能是你最好的select。
现在,就这样,如果有人要求我把一个可以运行的系统放在一起,那么多年来,我都会被吓坏了。 你将如何处理操作系统补丁,硬件问题,意外的崩溃的进程等? 你最好至less要确保你的员工能够经常到现场去做一个服务器的完整性检查,打补丁等等。你有没有办法让你远程为了这些目的访问服务器?
这里是我的承担: – 确保安装pgAgent – 我花了一些时间search,但无法findWindows上的Postgres 9.1 pgAgent的用户界面。 显然,一些存在于早期的版本 – 但为此我不得不手动编写一些SQL
SET search_path = pgagent; INSERT INTO pga_jobclass VALUES (6, 'Scheduled Tasks'); INSERT INTO pga_job VALUES (5, 6, 'TableReindex', 'Reindex tables', '', true, '2013-03-07 10:00:00.000+11', --date created '2013-03-07 10:00:00.000+11', --date changed NULL, NULL, NULL); INSERT INTO pga_schedule VALUES (3, 5, 'TableReindexSchedule', 'Reindex tables', true, --enabled '2013-03-07 10:00:00.000+11', --start date NULL, --end (never) '{t,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f}', --minutes: 't' for run on the first minute of an hour '{t,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f}', --hours: 't' to run at 3 AM '{f,f,f,f,f,f,f}', -- weekdays: don't care, all false '{t,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f,f}', -- monthdays: 't' to run on the first day '{t,t,t,t,t,t,t,t,t,t,t,t}'); -- months: all true to run on the first day on each month INSERT INTO pga_jobstep VALUES (5, 5, 'TableReindexInfo', '', true, 's', 'REINDEX TABLE mytable1;REINDEX TABLE mytable2;', '', '@@DATABASE_NAME@@', 'f', NULL);
作为一个支票,运行脚本后,jobnextrun在pga_job表中设置为“2013-04-01 03:00:00 + 11”。