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

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

Проблема с памятью [D7, Access]


Страницы:   1 2

VadimSpb ©   (2005-12-04 11:22:00) 

Добрый день!
Возникла проблема, связанная с памятью.
Суть проблемы: Если подключаемся через ADOTable к таблице, где 60000 записей, размер программы в памяти увеличивается на ~6 МБ, если через запрос на объединение с другими таблицами (ADOQuery) - ~60 МБ.
Собственно на запросы пришлось перейти, т.к. если поля в ADOTable лукапить с другой таблицей, они потом не сортируются. Но в результате попал на память!
Таких запросов несколько + увеличится число записей. В общем такие расходы памяти неприемлемы.
Как решить эту проблему?


sniknik   (2005-12-04 17:58:00) [21]

> Fay ©   (04.12.05 17:38) [6]
основная "претензия" к ADOTable, т.к. при переходе с BDE думают стереотипами, раз есть компонент значит и работать также... и нарываются на грабли. после возмущаются "тормознутостью" всего ADO.
а это совсем другой компанент, усеченный и ограниченный ADODataSet. хотя, если знать что к чему через него можно и запросы выполнять... но это "слегка" через задницу.
ADOQuery уже чисто за компанию, и за то рушит логику ADO, где все делится на запросы возвращающие данные и нет. для возвращающих ADODataSet для не возвращающих ADOCommand. а почему для оних запросов нужен ADODataSet для других не отличающихся по смыслу ADOQuery а для третих ADOStoredProc (кстати забыл, тоже нафиг в корзину) понять уже труднее. для чего делить если с точки зрения ADO это одно и тоже?


sniknik   (2005-12-04 17:48:00) [22]

> что в ряде случаев ADOQuery предпочтительнее.
по сравнению с чем? с ADOTable? двумя руками за.
по сравнению с ADODataSet? так ADOQuery это и есть ADODataSet, слегка подрихтованный молоточком по кузову. и не в сторону улутшений, а в сторону придать кузову "жигульную" форму.

> Какие явные преимущества DataSet?
DataSet основа всего, в том числе и Table(BDE)/ADODataSet, убери его и все рухнет. достаточно преимуществ?

> Все-таки, как с курсорами на сервере?
в смысле "как"? обычно, но используя их теряеш часть специфическую для локальных. а сортировка на локали судя по всему тебе нужна... в принципе можно попробовать обойтись индексами, но тут надо конкретнее в задачу "вникнуть".

да еще...
+ сожги Архангельского.... ;)

Fay ©   (04.12.05 17:38) [6]
> Я на этом форуме не первый год, и пока ни разу не видел аргументов
писал. не раз. видимо "разминулись".


Fay   (2005-12-04 17:38:00) [23]

>> надоело повторять одно и тоже
Что именно повторять?
Не понимаю о чём идет речь. Я на этом форуме не первый год, и пока ни разу не видел аргументов к заявлениям вида "избавься от. ADOTable/ADOQuer (вообще сними с палитры компонент и забудь про них)".


VadimSpb   (2005-12-04 16:44:00) [24]

Форд продается уже полностью укомплектованным :-))
Нужны реальные доводы. Я читал у Архангельского, что в ряде случаев ADOQuery предпочтительнее. Разумеется надо отталкиваться от степени разумной необходимости. Какие явные преимущества DataSet?
Все-таки, как с курсорами на сервере?


sniknik   (2005-12-04 16:19:00) [25]

Fay ©   (04.12.05 15:40) [2]
а просто так. чтоб было. (надоело повторять одно и тоже) лучше ты обьясни, зачем они тебе нужны? что в них такого особенного, чтобы за них так упорно держатся?

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


VadimSpb   (2005-12-04 16:17:00) [26]

Поставил курсор на сервер и все значительно улучшилось.
Если будет достаточно пользователей-клиентов, то не "ляжет" ли сервер, если все будет в его памяти?
Чем будет лучше DataSet? Применил его вместо ADOQuery и все осталось по прежнему.


Fay   (2005-12-04 15:40:00) [27]

2 sniknik ©   (04.12.05 11:38) [1]
> избавься от. ADOTable/ADOQuer
Почему? Давно хотел узнать...


sniknik   (2005-12-04 11:38:00) [28]

> Как решить эту проблему?
сменить логику с локально файловой на клиент серверную... и не только в программе, а в основном у себя в мозгах.

так например какой смысл тащить на клиента все 60000 записей? (в случае с jet com обьект обрабатывающий запросы можно рассматривать как sql сервер, впрочем он позволяет работать и локально)

в общем надо переделывать так чтобы вибиралось только нужное количество записей (а не использовать для этого фильтры после полной выборки), глобальные расчеты, обработки данных делались на сервере, и т.д.

+ избавься от. ADOTable/ADOQuer (вообще сними с палитры компонент и забудь про них) пользуйся ADODataSet/ADOCommand
(это в качестве дружеского совета. не по теме)


Страницы:   1 2

Наверх

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