Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ibase тормоза [D5, IB6.x]


Страницы:   1 2

SasaR ©   (2004-01-19 17:54:00) 

Не сказал бы, что процедура моя возвращает много данных (20 -30 тыс.строк), но несколько первых тысяч видны в гриде, но при попытке "ехать" вниз или в цикле while not eof do Next сильнейшие тормоза, длящиеся часами...
Что я такого наделал (в смысле может совершил к-ть распространённую ошибку ?)
Как избежать подобного ?


SasaR   (2004-01-20 10:39:00) [21]

To Desdechado - сервер IB6.0 здесь же, на моей машине, клиентской. Полей - понты. Должно получится ~30 тыс строк из таблицы в 80 тыс.Такое впечатление (прокручиваю в гриде), что сервер отфетчил ~50 записей и замер на 30 сек. кручу вниз - опять 30 сек и т.д... Может где не там suspend ставлю ?
На клиенте делаю фетч в однонаправленном-"невизуальном" TFIBquery ("зелёненкий") в MemoryDataSet из Rx-ов. Внутри цикла - Application.ProcessMessages....
Вы это имели ввиду ?
Кстати запрос там типа "поле <> 9"... может быстрее будет поле in [....] ?


Desdechado   (2004-01-19 20:21:00) [22]

да, если у тебя строки по 50-100 полей и с блобами, то вообще дрова :)


Desdechado   (2004-01-19 19:55:00) [23]

20-30 тыс записей для нормальной работы на клиенте не очень-то и нужны. Обычно 100-200 записей уже не в состоянии человек воспринять сразу.
А тормоза оттого, что идет закачка этих данных на клиент. Сервер-то их отделяет быстро, но затолкать их на клиент ему тяжело. Причины: тонкий канал (не пропускает много сразу) или слабый клиент (не может принять то, что сервер готов дать и канал - пропустить).
Рекомендую обходиться без таких выборок. А если хочешь делать экспорт, то делай это в пакетном режиме (без отображения), на однонаправленных курсорах и фоновой задачей.


jack128   (2004-01-19 19:04:00) [24]


> Результаты выполнения этой процедуры я вижу сразу
Значит сама процедура отрабатывает быстро.

> но если я не дай бог нажму в гриде Ctrl-End (в конец) или
> в цикле захочу пробежаться по данным запроса (напр. чтобы
> экспортировать в Excel) всё замерзает на часы.
Вывод - очень долгий фетч. Либо данных ОЧЕНЬ много(гораздо больше, чем несколько тысяч записей), либо очень тонкий канал связи(модем???)


}|{yk   (2004-01-19 18:51:00) [25]

А индексы сделать слабо?


SasaR   (2004-01-19 18:09:00) [26]

есть процедура, в ней делается запрос по "здоровенной" таблице.
Результаты выполнения этой процедуры я вижу сразу, но если я не дай бог нажму в гриде Ctrl-End (в конец) или в цикле захочу пробежаться по данным запроса (напр. чтобы экспортировать в Excel) всё замерзает на часы. В конце-концов в лучш. случае через пару часов пропадают песочные часы и можно свободно лазить по гриду вверх-вниз.
Каким образом тогда Ibase отдает записи в клиентское приложение ?
Частями ? Как это контролировать (типа OnAfterFethRecord есть ли такое)
Пользую FIBDataSet....
Заранее спасибо....


Term   (2004-01-19 17:57:00) [27]

а скоко тогда по твоему много данных???
20-30 млн.?

к тому же чтобы ответить на твой вопрос слишком мало сведений представил


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо