powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Залипание после запросов
5 сообщений из 5, страница 1 из 1
Залипание после запросов
    #32365950
mixerpro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите советом, знатоки!
Пишу утилиту к чужой БД.
Несколько слов о БД: InterBase, в базе 21 таблица, размер около 15 Мб.
Делаю запрос над таблицей Data (в ней всего около 200 000 записей).

Select D.* from Data D where D.Parnumber=12 and D.Data_Date='0:30 15.12.2003' and D.Object=2 Order By D.Item

Вроде все просто.
Таких запросов циклично около 50.
Отлаживаю прогрмму в Delphi 5.5. Сервер БД - Firebird 1.0
Так вот, запросы судя по отладчику обрабатываются быстро, но после всего этого программа залипает.
Смотрю: параметр Firebird Guardian - Number of Attachments - число вложений (или как это еще назвать) медленно растет. Так жду около 5 минут, потом, когда Number of Attachments падает до 1, программа отмокает.
Данные я только читаю, не записываю, после запроса делаю откат Rollback.
Такое подозрение, что идет перезапись данных на диск, что весьма странно, или это нормально?
Где можно еще поковырять, какие свойства посмотреть?
Мучаюсь уже неделю.
ICQ 134811783
...
Рейтинг: 0 / 0
Залипание после запросов
    #32366067
Фотография Nick74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во первых нельзя ли сделать эти 50 запросов одним? В большинстве случаев это возможно. Во вторых давай текст открытия/закрытия и говори где конкретно виснет. И кто виснет? Комп или твое приложение? Или сервак? Вообще странно - кажется Guardian показывал число подключений, а не открытых запросов. Ты все через один Connection делаешь?
...
Рейтинг: 0 / 0
Залипание после запросов
    #32366764
mixerpro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Nick74
Запросов у меня было по началу около 2200, потом я оптимизировал код и сделал запросы более глобальные. Так что это уже не поможет.
Далее...
Виснет сервак, как я понимаю. Он перегружен неосвобожденными запросами.

Открытие базы:

if SiconSisOpen then exit;
if not dmSicon.dbSicon.Connected then dmSicon.dbSicon.DatabaseName:=PathBaseSicon;
try if not dmSicon.dbSicon.Connected then dmSicon.dbSicon.Connected:=true;
SiconSisOpen:=true;
except MessageDlg( '...........', mtError ,[mbOk], 0);
end;

Запросы :

CurrIbQ.SQL.Clear;
CurrIbQ.SQL.Add(strSQL);
try CurrIbQ.Open; // ЗАЛИПАЕТ ЗДЕСЬ !!!
except
MessageDlg('..........',mtWarning,[mbOk],0);
Result:=false;
end;
// обработка данных
// обработка данных
// обработка данных
CurrIbQ.Close;
if dmSicon.transSicon.Active then dmSicon.transSicon.Rollback;

{
запрос strSQL типа :

Select D.* from Data D where D.Parnumber=12 and D.Data_Date='0:30 15.12.2003' and D.Object=2 Order By D.Item
}

Закрываю базу:

dmSicon.dbSicon.Connected:=false;
BasesSiconIsOpen:=false;
...
Рейтинг: 0 / 0
Залипание после запросов
    #32376619
Фотография Nick74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предложения (Просто попробовать - вдруг поможет?):
1. Сделай запрос не на форме, а создающийся каждый раз в рантайм и удаляющийся после вызова
2. Когда прога вешается запусти другую, которая делает, скажем, select простой какой-нибудь. Если она не повиснет, значит дело не в серваке?
3. Попробуй запросы группировать транзакциями штук по 50.
4. Включи CodeGuard, проверь нет ли утечек памяти - вдруг да выдаст что-то ценное. Кстати, у тебя IBX и IB какой?

Обработка данных включает их редактирование??? Может, у тебя DeadLock какой-нибудь висит? ПОсмотри еще уровень изоляции чтобы стоял ReadCommited
...
Рейтинг: 0 / 0
Залипание после запросов
    #32376622
Фотография Nick74
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Упс. Прочитал еще раз тему :) Пара вопросов отпала.
Попробуй убери Rollback - толку с него никакого, делай все в одной транзакции! В конце попробуй Commit поставить - ничего страшного не будет...
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Залипание после запросов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]