Страница 1 из 1

Большой тормозной путь IBDatabase->Connected=false...?

Добавлено: 24 окт 2006, 18:22
HEMD

Доброго времени суток...


Подскажите, коллеги, почему происходит временная задержка на закрытие базы?
У нас WinXP(2000), FireBird 1.0 (InterBase 6.5),C++Builder 5.0...
При закрытии приложения пишем:

Код: Выделить всё

  IBDatabase->Connected=false;
База: 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

Спасибо - такое кол-во ответов... :D

Был в командировке...
Ответы:
-Испробавано на ОС: WinXp b Win2000, на IB 6,5 на FB 1.0 - 2.0..
-Время дисконекта не зависит от кол-ва пользователей...
- своих ресурсов нет...
- Замена возможна - посмотрел по событию Disconect...
- Table не пользуюсь - заменяю IBQuery...
- Commit быстр как горный олень...
Спасибо - буду отключать БД по частям и отслеживать изменения...
Возможно еще нужно поучиться с правилами переноса предметной области в систематизацию таблиц... У меня все простое - сделано на заре входа в БД....


ВСЕМ спасибо... и удачи...

Добавлено: 29 окт 2006, 12:27
CyberMax
HEMD писал(а): - Table не пользуюсь - заменяю IBQuery...
Шило на мыло меняете?