Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.15;
Скачать: CL | DM;

Вниз

Проблема при выполнении большого запроса через ADO   Найти похожие ветки 

 
awaken   (2002-07-25 03:29) [0]

нарвался на неприятную ситуацию.
при выполнении запроса возвращающего порядка 170 тысяч записей через ADO DataSet в удаленном модуле MIDAS время выполнения запроса стремится к бесконечности (как и загрузка процессора и использование памяти)
при этом ничего экстраординарного я не делаю:
DataSet.CommandText := "select * from xxx"; (без условий)
DataSet.Open;

зы. тот же самый запрос забитый вручную в терминале MS SQL Server выполняется в течние нескольких секунд


 
Владислав ©   (2002-07-25 06:28) [1]

Жалко пользователей, которые будут работать с таким количеством записей!


 
awaken   (2002-07-25 08:03) [2]

пользователи с таким количеством работать конечно не будут
я просто тестирую систему на максимально худший случай
почему она виснет то? буфера что ли там какие-то переполняются?
причем локально (не через midas) рекордсет открывается.
а когда его открываешь через клиентский компонент с привязанным ClientRecordSet тогда все виснет - и клиент и сервер.
опытным путем установлено что не виснет при 5000 записях в рекордсете. начиная с 10000 все, пиши пропало.


 
Dok_3D ©   (2002-07-25 09:09) [3]

>> тогда все виснет - и клиент и сервер.

Виснет кто-то один из них.
Выясни, кто именно, и тебе будет проще локализовать проблему.


 
AlexSam   (2002-07-25 09:24) [4]

Может быть, файл подкачки на лок.станции увеличить?


 
jonik pegas ©   (2002-07-25 09:25) [5]

Вероятно ClientDataSet кеширует все данные в себя. На то он собственно и ClientDataSet чтобы закачать данные от сервера и работать с ними локально в случае необходимости передавать изменения серверу. А локально (не через midas) или в терминале рекордсет закачивает часть (ну сколько ему нужно чтобы например в Grid отобразить) и остонавливается. Так что проблема вероятно не в ADO. Для MS SQL можно поигратся конструкцией Select .....
TOP Максимально приемлимое колво записей


 
awaken   (2002-07-25 09:59) [6]

>Вероятно ClientDataSet кеширует все данные в себя. На то он >собственно и ClientDataSet чтобы закачать данные от сервера и

он кеширует однозначно. такое ощущение что все сразу пытается

>в Grid отобразить) и остонавливается. Так что проблема вероятно >не в ADO. Для MS SQL можно поигратся конструкцией Select .....
>TOP Максимально приемлимое колво записей
можно и так но я игрался с параметром самого TADODataSet. там есть свойство "возвращать не больше макс. количества записей" (по умолчанию 0, то есть все). реально никто конечно не делает поиски в базе возвращаюшие 5000 записей. но система должна быть "дуракоустойчивой"

>Виснет кто-то один из них.
виснут именно оба т.к. сервер "бесконечно" выполняет запрос (причем расход памяти на сервере растет не останавливаясь. как будто он все время новый буфер аллокирует). а клиент ждет т.к. функция вызова не является асинхронной. можно извратиться через многопоточность (так делает IE и прочие браузеры). запускать запрос в отдельном треде так чтобы юзер имел доступ к функциям пользовательского интерфейса (и кнопке Cancel search)





Страницы: 1 вся ветка

Текущий архив: 2002.08.15;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
1-48105
Goblinus
2002-08-01 01:31
2002.08.15
Как добавить свой контрол в OpenDialog (CheckBox, например)?


7-48342
boogier
2002-06-04 10:17
2002.08.15
Как получить путь к рабочему столу?


4-48378
VJar
2002-06-08 12:07
2002.08.15
Получение адресов папок


3-47930
mazepa
2002-07-25 11:23
2002.08.15
SQL Help


1-48159
Andy BitOff
2002-08-02 08:00
2002.08.15
Excel