README.md

Используя данный проект Вы соглашаетесь что: Исходный код предоставляется по типу “AS-IS”. Предназначен для ознакомления.

Исп. Delphi 10.3 Приложение написано с использованием библиотеки lockBox 3.0 https://github.com/TurboPack/LockBox3 С использованием модуля демонизации от Евгения Корепова: https://github.com/EvgeniyKorepov/LinuxDaemon С использованием компонентов юнидак Используется библиотека QuickLogger https://github.com/exilon/QuickLogger

Описание: Утилита “rebuildindex” предназначенная для подключения к базе данных Postgres и перестроенния индексов (REINDEX TABLE CONCURRENTLY <schema_name>.<table_name>) у сущностей полученных по результатам запроса записанного в конфигурации(.cfg) ключа “Script”.

Файл конфигурации имеет следующие параметры: 1. ConnectionString - строка подключения зашифрованная утилитой shifrOCO т.к хранит пароль. Строка подключения соответствует стандарту unidАc(devАrt). Шифруется командой “shifrOCO -e -string:‘<строка>’” 2. Script - SQL запрос, заполняется в конфигурации в одну строку(без переноса строк), первый атрибут должен возращать значение в строке по маске <schema_name>.<table_name> 3. MaxWorker - Для увеличения производительности задействовано несколько потоков (параллельное перестроение индексов), Вы можете установить максимальный размер пула потоков. Имеются ограничения по пулу от 0 до 50. (по умолчанию 10) 4. Intervalminute - интервал проверки индексов в соответствии с запросом в “Script”. Указывается в минутах.(по умолчанию 1440 минут = сутки) 5. LastReindex - служебное значение, время последнего перестроения индексов

Приложение имеет 2-ва типа запуска, как служба и как обычная утилита. Использование как утилиты: rebuildindex -configpath // получить путь к конфигурации созданной по умолчанию rebuildindex -testconnection // проверка строки подключения к базе данных rebuildindex -testconnection -path:<путь_до_файла_конфигурации> // проверка подключения по данным указанным в конфигурации -path. Если файл не найден - конфигурация с указанным именем будет создана по умолчанию rebuildindex -testconnection -check -path:<путь_до_файла_конфигурации> // проверка строки подключения к базе данных и запроса в ключе “Script” конфигурации в “-path” Если файл не найден - конфигурация с указанным именем будет создана по умолчанию rebuildindex -now // Выполнить перестроение индексов сейчас rebuildindex -now -path:<путь_до_файла_конфигурации> // Выполнить перестроение индексов сейчас используя конфигурацию указанную в “-path:”. Если файл не найден - конфигурация с указанным именем будет создана по умолчанию. rebuildindex -h //получить справку на экран. При добавлении в планировщик Windows рекомендуется вызывать приложение с ключем “-ignore” для пропуска остановок.только для Windows)

Использование как службы (только для Linux) (Рекомендуется выполнять после проверки подключения “rebuildindex -testconnection -check”):

rebuildindex -gservice -path:<путь_до_файла_конфигурации> // Формирование конфигурации службы с использованием конфигурации с указаннным местом хранения. (файл /etc/systemd/system/rebuildindex.service) Если файл не найден - конфигурация с указанным именем будет создана по умолчанию После конфигурирования службы с использованием ключа “-gservice” необходимо выполнить команды: 1. systemctl daemon-reload 2. systemctl start rebuildindex 3. systemctl status rebuildindex Если статус вернулся Active = служба работает и можно включить её командой: systemctl enable rebuildindex Если Вы изменили конфигурацию службы и не хотите дожидаться следующей интервальной перечитки конфигурации Вам необходимо выполнить команду systemctl reload rebuildindex - конфигурация применится сразу.

При обнаружении изменений в конфигурации службы в ключах: Script, ConnectionString приложение автоматический выполняет сохранение старой конфигурации рядом с новой конфигурацией добавляя суффикс bak_ (только для linux)

Журналирование: Служба журналирует все сообщения в stdout, посмотреть сообщения от службы можно выполнив команду: 1. journalctl -u rebuildindex 2. В каталоге с приложением в папке logs храняться логи - старые записи удаляются при достижении 200MB

Описание

Перестроение индексов Postgres на "горячую"(без блокировки) без использование расширений PG(внешняя утилита-служба).

Конвейеры
0 успешных
0 с ошибкой