Назад | Перейти на главную страницу

PostgreSQL, автоматизация REINDEX, среда Windows

У меня есть пара таблиц PostgreSQL (9.1), которые часто вставляются / удаляются. Со временем они страдают от раздувания индекса, хотя автоочистка настроена и работает регулярно.

Я думаю об автоматизации REINDEX на этих таблицах. Никто не сможет получить физический доступ к базе данных, поскольку программное обеспечение будет установлено на сайте клиента и буквально должно работать годами.

Я продолжаю читать о «заданиях cron», но мне не хватает руководства или руководства о том, как лучше всего его настроить, особенно в среде Windows.

Может ли кто-нибудь указать мне правильное направление? Другие предложения приветствуются, но главное требование - не требовать никаких ручных действий.

Windows имеет свои встроенные Диспетчер задач который, хотя и несколько ограничен в функциональности, может сработать для вас. Если вам нужно что-то с немного большей настраиваемостью, мне повезло с Визуальный Cron. Тем не менее, в вашей ситуации я бы хотел, чтобы на коробке было как можно меньше неизвестного / непроверенного / стороннего программного обеспечения, поэтому, если вы жестяная банка заставить работать собственный планировщик задач, это, вероятно, будет вашим лучшим вариантом.


Теперь, когда это решено, я бы до смерти испугался, если бы кто-нибудь попросил меня собрать систему, которая могла бы работать без вмешательства пользователя в течение многих лет. Как вы будете обрабатывать исправления ОС, проблемы с оборудованием, неожиданные сбои процессов и т. Д.? Вам лучше, по крайней мере, убедиться, что кто-то из ваших сотрудников сможет время от времени посещать объект, чтобы проверять работоспособность сервера, применять исправления и т. Д. Нет ли у вас возможности получить удаленный доступ? доступ к серверу для этих целей?

Вот мой взгляд на это: - убедитесь, что pgAgent установлен - я потратил некоторое время на поиск, но не смог найти пользовательский интерфейс для pgAgent в Windows для Postgres 9.1. Судя по всему, некоторые из них существовали и в более ранних версиях, но для этого мне пришлось написать немного 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 установлено значение «2013-04-01 03: 00: 00 + 11» в таблице pga_job после запуска сценария.