Привет,

Немножко разобрался, периписал програму с процедурой вставки новых записей. Раньше открывал pFIBDataSet`ом всю таблицу и попросту делал append ... post; точно так как должен был работать сотрудник. База всдувалась до 190 мб. Теперь только для тестирования сделал все insert полностью только на pFIBQuery и результат ошарашил меня - база заполнилась только до 20 мб. Я то понимаю что тестировал не самым оптимальным способом (имитировал ввод руками), но даже не представлял что зто как нибудь может повлиять на размер базы данных, а тем боле на скорость дальнейшей работой с вводом даных. Еще вопросик: как руками заполнять боьшые базы данных, с последующим большым update по нескольким базам ? Можно ли pFIBDataSet`ом открывая несколько записей, или все запоминать в tEdit и потом вставлять SQL`ом. А можеть есть какие нибудь компоненты оптимизированые для ввода данных с FibPlus и FireBird ?

Konstantin R. Beliaev wrote:

Artur wrote:

Ечще заметил: backup тоже тормозит, сделает backup фаил около 10 мб и диск oпять грызется больше часа, потом допишет до 11 мб и бацкуп завершон. оригинал был 187 мб. после restore *.gdb совсем маленкий, только 20 мб.


Триггера делают много вставок-удалений, но таблица, куда эти изменения льются, читается или чистится только на старте программы. Вероятно на этой таблице еще плохие индексы.
Соответственно тормоза - это сборка мусора в этой самой таблице.
Если при бэкапе отключить сборку мусора - бэкап пройдет быстро, если включить verbose - будет видно на какой таблице тормоза.
Это то, что подсказывает мой телепатический модуль :-)

PS. Можешь писать на английском, если тебе проще ;-), бОольшая часть присутствующих его понимает.



Ответить