![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поможите понять работу с TQuery/TADOQuery. [MSSQL]
Behemoth © (2003-08-13 16:16:00)
Query после запроса возвращаяет набор данных, но путешествуя по нему (First, Next ...) все равно идет обращение к базе. Так ли это? Если так, то как сделать, чтобы после запроса Не было б этих обращений.
Desdechado (2003-08-14 11:11:00) [1]
> Это действительно нормально?
Зависит от настроек MSSQL, операционки, числа подключений, вида выполняемых операций и т.д.
Nikolay M. (2003-08-13 17:25:00) [2]
> На машине всего 512 физической памяти
Мало. Лучше гиг. А два - еще лучше. Только сколько ни ставь - все равно будет мало.
Behemoth (2003-08-13 17:01:00) [3]
Спасибо. Теперь понятно.
Еще вопрос не в тему. Смотрю скоко сервер занимает памяти. На машине всего 512 физической памяти, а 490 из них занято виндами с сервером (сервер отдельно 380М). Я понимаю что кэширование запросов и т.д. но не столько же. Это действительно нормально?
Johnmen (2003-08-13 16:59:00) [4]
>Behemoth © (13.08.03 16:16)
>... все равно идет обращение к базе.
Как это проверено ?
Nikolay M. (2003-08-13 16:56:00) [5]
> делаю запрос возвращяющий 1 000 000 записей
А этот запрос у тебя на сервере мгновенно отрабатывает? Столько же, сколько и запрос, возвращающий 10 записей?
Vlad (2003-08-13 16:53:00) [6]
Естественно, ведь время уходит на выполнение самого SQL запроса.
А клиент просто подтягивает нужное количество записей из полученного набора данных на сервере, по мере скроллинга клиентского датасета.
Behemoth (2003-08-13 16:49:00) [7]
Тогда не пойму такую вещь: делаю запрос возвращяющий 1 000 000 записей, так у меня комп задумывается минуты на 3, а на 500 так это он лётом. По вашему должно одинаково. ???
Desdechado (2003-08-13 16:26:00) [8]
Запрос к серверу формирует ответ.
Ответ подается на клиента не сразу, а частями. Для начала - штук 20. Потом когда ты переходишь на 21, клиент фэтчит (достает) очередную запись. Если ты пробежался по всем, то данные уже все на клиенте, больше ничего с сервера в этой транзакции не будет идти.
А делается так для экономии траффика.
MsGuns (2003-08-13 16:25:00) [9]
Да, так, если объем записей превышает размеры кэша. Это совершенно нормально. Чтобы не было "елозанья", не надо писать запросы, возвращающие большое кол-во записей (на экране за раз более 3-4 десятков строк физически показать нельзя).
Vlad (2003-08-13 16:23:00) [10]
CacheSize побольше поставь. Столько, сколько записей ты планируешь в датасете получать.