Файл БД Firebird 2 порядка 26GB
Работа данного ПО довольно медленная.
Решил как мне посоветовали на этом форуме выполнить архивирование периодов. Но и попутно оттестировать переход на Firebird 3.
Дабы исключить неприятные моменты при миграции - все действия выполняю на копии данных на машине сходной по характеристиками с рабочей системой.
Итак выполняю резервное копирование БД
- | Показать
-
"C:\Program Files (x86)\Common Files\Firebird_M1\bin\gbak.exe" -b -se service_mgr -user SYSDBA -password pa$$w0rd D:\Medoc\db\zvit.fdb D:\TMP\zvit.fbk
Переношу zvit.fbk на тестовую машину.
На тестовой машине устанавливаю MEDOC из дистрибутива скаченного с сайта медка.
Догоняю свежеустановленное ПО до версии БД обновлениями с того же сайта.
Восстанавливаю БД из zvit.fbk, но уже свежеустановленным при инсталяции медка
Firebird 3
- | Показать
-
gbak -V -C -USER SYSDBA -PAS pa$$w0rd F:\backup\zvit.fbk F:\Medoc_DB\zvit.fdb
В ConnectionSetup "Налаштування Firebird - Розміщення БД" прописываю путь к восстановленному файлу БД.
Возникают некоторые проблемы с доступом к файлу БД - но это решается предоставлением прав доступа на чтение/запись в файл для "Сетевой службы"
Все запускается. Данные на месте.
Выполняю настройку в диалоговом окне медка "Архівування документів". Период архивации - квартал.
Поехали... Но это у меня выполняется очень, очень долго.
На скриншоте далее можно видеть, что каждый файл создается порядка часа. В файле порядка 25 тыс. записей.
База содержит документы с 2011 года.
- | Показать
-
- medoc01.png (19.23 Кіб) Переглянуто 2179 разів
Хорошо. Возможно есть какие-то различия в структуре баз данных (эталона - файла БД созданного во время инсталяции ПО и восстановленной из резервной копии)?
Беру IBExpert и сравниваю.
Предлагаются такие изменения в целевой (рабочей БД на основании структуры эталона). Вроде как подобные изменения не должны влиять на производительность. Однако пробую накатить изменения.
Скрипт обновления структуры
- | Показать
-
CONNECT 'LOCALHOST/3050:F:\Medoc_DB\ZVIT.FDB' USER 'SYSDBA' PASSWORD '';
SET AUTODDL ON;
/******************************************************************************/
/**** Dropping primary key constraints ****/
/******************************************************************************/
RECONNECT;
ALTER TABLE DSGFUNC DROP CONSTRAINT PK_DSGFUNC;
/******************************************************************************/
/**** Creating primary key constraints ****/
/******************************************************************************/
RECONNECT;
ALTER TABLE DSGFUNC ADD CONSTRAINT PK_DSGFUNC PRIMARY KEY (CODE);
/******************************************************************************/
/**** Creating foreign key constraints ****/
/******************************************************************************/
RECONNECT;
ALTER TABLE CARDVAL ADD CONSTRAINT FK_CARDVAL FOREIGN KEY (CARD) REFERENCES CARD (CODE) ON DELETE CASCADE;
ALTER TABLE DSGFUNCPARAMS ADD CONSTRAINT FK_DSGFUNCPARAMS_1 FOREIGN KEY (IDFUNC) REFERENCES DSGFUNC (CODE) ON DELETE CASCADE;
ALTER TABLE FJ0500102_MAIN ADD CONSTRAINT FK_FJ0500102_MAIN FOREIGN KEY (CARDCODE) REFERENCES CARD (CODE) ON DELETE CASCADE;
ALTER TABLE FJ0500102_TAB1 ADD CONSTRAINT FK_FJ0500102_TAB1 FOREIGN KEY (CARDCODE) REFERENCES CARD (CODE) ON DELETE CASCADE;
ALTER TABLE FJ1201002_MAIN ADD CONSTRAINT FK_FJ1201002_MAIN FOREIGN KEY (CARDCODE) REFERENCES CARD (CODE) ON DELETE CASCADE;
ALTER TABLE FJ1201002_TAB1 ADD CONSTRAINT FK_FJ1201002_TAB1 FOREIGN KEY (CARDCODE) REFERENCES CARD (CODE) ON DELETE CASCADE;
ALTER TABLE FJ1201102_MAIN ADD CONSTRAINT FK_FJ1201102_MAIN FOREIGN KEY (CARDCODE) REFERENCES CARD (CODE) ON DELETE CASCADE;
ALTER TABLE FJ1201102_TAB1 ADD CONSTRAINT FK_FJ1201102_TAB1 FOREIGN KEY (CARDCODE) REFERENCES CARD (CODE) ON DELETE CASCADE;
ALTER TABLE FJ1201202_MAIN ADD CONSTRAINT FK_FJ1201202_MAIN FOREIGN KEY (CARDCODE) REFERENCES CARD (CODE) ON DELETE CASCADE;
ALTER TABLE FJ1201202_TAB1 ADD CONSTRAINT FK_FJ1201202_TAB1 FOREIGN KEY (CARDCODE) REFERENCES CARD (CODE) ON DELETE CASCADE;
ALTER TABLE FJ1201501_MAIN ADD CONSTRAINT FK_FJ1201501_MAIN FOREIGN KEY (CARDCODE) REFERENCES CARD (CODE) ON DELETE CASCADE;
ALTER TABLE FJ1201501_TAB1 ADD CONSTRAINT FK_FJ1201501_TAB1 FOREIGN KEY (CARDCODE) REFERENCES CARD (CODE) ON DELETE CASCADE;
ALTER TABLE FJ1201501_TAB2 ADD CONSTRAINT FK_FJ1201501_TAB2 FOREIGN KEY (CARDCODE) REFERENCES CARD (CODE) ON DELETE CASCADE;
ALTER TABLE FORMCLS ADD CONSTRAINT FK_FORMCLS2 FOREIGN KEY (IDCLASSIF) REFERENCES CLASSIF (CODE) ON DELETE CASCADE;
ALTER TABLE HBBUDGETLGOT ADD CONSTRAINT FK_HBBUDGETLGOT_1 FOREIGN KEY (BUDJET_NUM) REFERENCES HBBUDJET (CODE) ON DELETE CASCADE;
Результат его выполнения - полностью отрицательный:
- | Показать
-
- medoc02.png (81.42 Кіб) Переглянуто 2179 разів
Далее экспортированная структура рабочей БД.
Буду рад любому совету.