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

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
HEMD
Сообщения: 9
Зарегистрирован: 25 июл 2005, 14:12

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

Сообщение HEMD » 24 окт 2006, 18:22


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


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

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

  IBDatabase->Connected=false;
База: 10Мб, ~50.000 записей - закрываемся ~5с...
а что же будет дальше?

---------------------------------------------

Понимаю, что вопрос общего характера и ответ наверное не сможет быть "в точку"... Однако...


Возможно ли что-то не оптимизировано?

И есть "правила быстрых" приложений?

Можно ли заменить:

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

  IBDatabase->Connected=false;
  IBDatabase->Close(); 
(Как показалось - закрывается быстрее, но все равно тяжело...
И правильно так "закрываться"?)?

---------------------------------------------


Заранее благодарен...

dimitr
Разработчик Firebird
Сообщения: 888
Зарегистрирован: 26 окт 2004, 16:20

Сообщение dimitr » 24 окт 2006, 19:50

на FB 1.5 не пробовали?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Сообщение kdv » 25 окт 2006, 00:09

Понимаю, что вопрос общего характера и ответ наверное не сможет быть "в точку"... Однако...
Вы определитесь, какая ОС, какой сервер, и что главное - клиентская библиотека от какого сервера. А то слишком много переменных. Кроме того, сообщите, дисконнекты ВСЕГДА по 5 секунд, независимо от количества подключенных пользователей, и у всех, или от случая к случаю?

stix-s
Заслуженный разработчик
Сообщения: 557
Зарегистрирован: 13 дек 2005, 11:52

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

Сообщение stix-s » 25 окт 2006, 06:03

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();
Можно.

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

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

Сообщение CyberMax » 26 окт 2006, 08:38

HEMD писал(а):Можно ли заменить:

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

  IBDatabase->Connected=false;
  IBDatabase->Close(); 
(Как показалось - закрывается быстрее, но все равно тяжело...
И правильно так "закрываться"?)?
Не может, поэтому вам показалось.
Посмотри исходники - код IBDatabase->Connected=false делает то же самое, что и IBDatabase->Close().

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

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

Сообщение Dimitry Sibiryakov » 26 окт 2006, 09:31

HEMD писал(а):И есть "правила быстрых" приложений?
Есть. И имя им - забота о памяти. Если у вас TIBTable как открывается при старте приложения так и закрывается только в конце - тормоза будут однозначно. Ей же буфера надо сбрасывать.

jack128
Сообщения: 2
Зарегистрирован: 27 окт 2004, 10:42

Сообщение jack128 » 26 окт 2006, 23:33

Одна ReadWrite транзакция на всё приложение, которая коммитится только при закрытии этого прилождения - и ты не пять секунд, а пять минут ждать будешь...

HEMD
Сообщения: 9
Зарегистрирован: 25 июл 2005, 14:12

Сообщение HEMD » 28 окт 2006, 14:51


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

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


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

CyberMax
Заслуженный разработчик
Сообщения: 638
Зарегистрирован: 31 янв 2006, 09:05

Сообщение CyberMax » 29 окт 2006, 12:27

HEMD писал(а): - Table не пользуюсь - заменяю IBQuery...
Шило на мыло меняете?

Ответить