Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.08.15;
Скачать: [xml.tar.bz2];

Вниз

Проблема при выполнении большого запроса через 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.006 c
7-48347
IIS
2002-05-31 11:01
2002.08.15
Как програмно раздовать права на реестр?


14-48281
ev
2002-07-20 18:24
2002.08.15
как объявить функцию в C?


1-48194
Fissher
2002-08-02 20:36
2002.08.15
Снова я со своим курсором


1-48062
diMAN
2002-08-02 19:05
2002.08.15
Ошибка при запуске программы


3-47965
ShuraGrp
2002-07-25 12:56
2002.08.15
Ошибка insert select





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский