Страница 1 из 1
Большой тормозной путь IBDatabase->Connected=false...?
Добавлено: 24 окт 2006, 18:22
HEMD
Доброго времени суток...
Подскажите, коллеги, почему происходит временная задержка на закрытие базы?
У нас WinXP(2000), FireBird 1.0 (InterBase 6.5),C++Builder 5.0...
При закрытии приложения пишем:
База: 10Мб, ~50.000 записей - закрываемся ~5с...
а что же будет дальше?
---------------------------------------------
Понимаю, что вопрос общего характера и ответ наверное не сможет быть "в точку"... Однако...
Возможно ли что-то не оптимизировано?
И есть "правила быстрых" приложений?
Можно ли заменить:
Код: Выделить всё
IBDatabase->Connected=false;
IBDatabase->Close();
(Как показалось - закрывается быстрее, но все равно тяжело...
И правильно так "закрываться"?)?
---------------------------------------------
Заранее благодарен...
Добавлено: 24 окт 2006, 19:50
dimitr
на FB 1.5 не пробовали?
Добавлено: 25 окт 2006, 00:09
kdv
Понимаю, что вопрос общего характера и ответ наверное не сможет быть "в точку"... Однако...
Вы определитесь, какая ОС, какой сервер, и что главное - клиентская библиотека от какого сервера. А то слишком много переменных. Кроме того, сообщите, дисконнекты ВСЕГДА по 5 секунд, независимо от количества подключенных пользователей, и у всех, или от случая к случаю?
Re: Большой тормозной путь IBDatabase->Connected=false...
Добавлено: 25 окт 2006, 06:03
stix-s
HEMD писал(а):
Подскажите, коллеги, почему происходит временная задержка на закрытие базы?
У нас WinXP(2000), FireBird 1.0 (InterBase 6.5),C++Builder 5.0...
База: 10Мб, ~50.000 записей - закрываемся ~5с...
Было у меня подобное (но при установлении коннекта) с Win 2000 SP4 и FB1.0 - что-то там в MS в одном из сетевых сервисов изменили.
Вылечилось переходом на FB 1.5
никакие ресурсы собственные, кстати при закрытии БД у тебя не освобождаются в цикле?
HEMD писал(а):
Возможно ли что-то не оптимизировано?
И есть "правила быстрых" приложений?
Оптимальная структура БД, нормальная сеть, дисковая подсистема сервера, оптимизированные запросы.
HEMD писал(а):
Можно ли заменить:
IBDatabase->Connected=false;
IBDatabase->Close();
Можно.
Re: Большой тормозной путь IBDatabase->Connected=false...
Добавлено: 26 окт 2006, 08:38
CyberMax
HEMD писал(а):Можно ли заменить:
Код: Выделить всё
IBDatabase->Connected=false;
IBDatabase->Close();
(Как показалось - закрывается быстрее, но все равно тяжело...
И правильно так "закрываться"?)?
Не может, поэтому вам показалось.
Посмотри исходники - код IBDatabase->Connected=false делает
то же самое, что и IBDatabase->Close().
Re: Большой тормозной путь IBDatabase->Connected=false...
Добавлено: 26 окт 2006, 09:31
Dimitry Sibiryakov
HEMD писал(а):И есть "правила быстрых" приложений?
Есть. И имя им - забота о памяти. Если у вас TIBTable как открывается при старте приложения так и закрывается только в конце - тормоза будут однозначно. Ей же буфера надо сбрасывать.
Добавлено: 26 окт 2006, 23:33
jack128
Одна ReadWrite транзакция на всё приложение, которая коммитится только при закрытии этого прилождения - и ты не пять секунд, а пять минут ждать будешь...
Добавлено: 28 окт 2006, 14:51
HEMD
Спасибо - такое кол-во ответов...
Был в командировке...
Ответы:
-Испробавано на ОС: WinXp b Win2000, на IB 6,5 на FB 1.0 - 2.0..
-Время дисконекта не зависит от кол-ва пользователей...
- своих ресурсов нет...
- Замена возможна - посмотрел по событию Disconect...
- Table не пользуюсь - заменяю IBQuery...
- Commit быстр как горный олень...
Спасибо - буду отключать БД по частям и отслеживать изменения...
Возможно еще нужно поучиться с правилами переноса предметной области в систематизацию таблиц... У меня все простое - сделано на заре входа в БД....
ВСЕМ спасибо... и удачи...
Добавлено: 29 окт 2006, 12:27
CyberMax
HEMD писал(а): - Table не пользуюсь - заменяю IBQuery...
Шило на мыло меняете?