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

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

rxMemoryDataSet [D5, IB6.x]


SasaR ©   (2004-01-20 19:00:00) 

Здравствуйте :))
Формирую сложный, дурацкий, с переменным количеством столбцов отчёт. Данных в нём выходит очень много ~30 тыс. строк.
Фетчу из базы и заполняю сабж. В одном из вопросов прозвучал ответ, что, мол, сабж на больших объемах тормозит. Скорее всего так оно и есть. Вопрос - есть ли альтернатива сабжу и если да, то какая ?


Term   (2004-01-21 15:47:00) [1]


> Нужно - как в хеплпе :))

естественно, а для чего же еще тогда хелпы пишут, не шутки же ради :)))


SasaR   (2004-01-21 15:38:00) [2]

Поборол ...
Кому интересно - строка типа
ClientDataSet.FieldDefs.Add(F.Name,ftInteger,0,false) не нужна - из-за неё росла память!!!
Нужно - как в хеплпе :))


SasaR   (2004-01-21 15:14:00) [3]

gобочный эффект....
Апликуха использует 400Mb оперативной (памяти) даже при использовании TClientDataSet.LogChanges:=false....
при rxMemoryDataSet было 20Mb...
Как побороть ?


SasaR   (2004-01-21 13:55:00) [4]

Ох Вы и прицепились к клише "кропотливого анализа". На самом деле с помощью вышеупомянутых "кнопочек" в таком здоровенном наборе данных легко найти что-то и сделать соотв. выводы.
Исх. данные - ~ 1 млн. строк из которых в ходе группировки и всяких извратов получ 30 тыс.
Запрос к такой таблице, даже с минимальными условиями долог...
Поэтому и локальный грид. Но раз пользователь уже в гриде и посидел 15 мин и получил такой набор - пусть фильтрует, сортирует, экспортирует в Excel, dbf(если строк > 65535).
Если бы не вы, с вашими ответами, сидел бы он сутки :))
Прогресс - налицо, спасибо Нам всем :)


SasaR   (2004-01-21 13:44:00) [5]

To Dred2k - Спасибо !!!
Таки да !!! Вместо 17 мин - 20 сек !!!
To Sergey13 - слава богу не я буду анализировать. Насчет анализа на сервере я "долго" думал :)
Просто отчёт вида:

(клиент 1 на дату 1) (клиент 1 на дату 2) и т.д.
строка 1
строка 2
...
строка N

Сколько клиентов - неизвестно и дат этих клиентов - тоже.
Задаются вначале пользователем.
Я не знаю заранее количество столбцов. Ib серверу я такое не передам, да и не сможет он вернуть из сторед прц такой набор данных.
Вот и получаю я столбцы отдельно и накапливаю теперь уже в TClientDataSet :))
Может можно изящней и оптимальнее ??? А ?


Desdechado   (2004-01-21 12:00:00) [6]

это я говорил о тормозах rxMemoryDataset
там же я говорил о том, что нет необходимости перекачивать из обычного датасета в другой только для того, чтобы сделать экспорт или показать в гриде.
Зачам эти манипуляции? Что они дают?


Term   (2004-01-21 11:47:00) [7]


> для кропотливого анализа и исследования

если ты или юзер, все 30000 строк кропотливо анализируеш!!!
то нафига ваще СУБД, программа и программист!!!
делайте всё руками на счётах костяшки перебрасывая, кропотливей чем так не получиться... или я чтото не понимаю, особенно фразу взятую в качестве цитаты


Dred2k   (2004-01-21 11:42:00) [8]

> Danilka © (21.01.04 10:35) [5]
> На самом деле, альтернатива в другом. %))

И в датасете тоже, хотя сама необходиомость такого экстремального "анализа" мне, мягко говоря, непонятна.
Что-то тут с постановкой не то...


VAleksey   (2004-01-21 11:26:00) [9]

Ты грид - то отключи нафиг на время обработки данных.


Danilka   (2004-01-21 10:38:00) [10]

Наверняка, по-сторонам грида навешаны всякие кнопочки с фильтрами по-полям грида, суммами, сортировками и т.д. И "кропотливый анализ" на самом деле и есть - использование этих кнопочек. :))
И все что нужно - использовать эти кнопочки до того, как забираешь данные, а не после того. :))


Danilka   (2004-01-21 10:35:00) [11]

[4] Dred2k © (21.01.04 09:40)
На самом деле, альтернатива в другом. %))
В том, что никакой анализ 30 тысяч строк в гриде невозможен. Тем более "кропотливый".
Перед тем как забирать записи с сервера, надо уточнить у юзера: что конкретно ему нужно, и забрать только это.

Чем меньше записей - тем более эффективна работа юзера - это аксиома, работающая даже с мегаюзерами. :))


Dred2k   (2004-01-21 09:40:00) [12]

> SasaR (20.01.04 19:00)

Альтернатива очевидна - TClientDataSet, обязательно с отключенной историей изменений (LogChanges := False).
Я сам ранее пользовал сабж, но после некоторых экспериментов убедился в оптимальности TClientDataSet - и по скорости, и по возможностям.


Sergey13   (2004-01-21 09:19:00) [13]

2SasaR (20.01.04 19:15) [2]
>Нет, все 30 тыс. строк в Quantium-гриде, для кропотливого анализа и исследования.
Вручную исследуешь? Т.е. визуально? И как? До конца когда нибудь доходил? 8-)
Может тебе стоит подумать над реализацией анализа на сервере в ХП и выдаче на клиента только результатов этого анализа?


SasaR   (2004-01-20 19:15:00) [14]

Нет, все 30 тыс. строк в Quantium-гриде, для кропотливого анализа и исследования. К тому-же там - практически мгновенный (но глюкавый в строке сумм) экпорт в Эксель для тех же целей.
Хоть плачь - почти 17 мин происходит myGrid.DataSource:= rxMemoryDataset;myGrid.OptionsDB = ...+[edgoLoadAllRecord];
Может это и грид тормозит, а может и сабж...
От грида избавится или убрать "+[edgoLoadAllRecord]" не хочется - уж больно хорош он в плане фильтров и сортировки..
А вот может замена сабжа на альтернативу может ускорит это всё....


Семен Сорокин   (2004-01-20 19:06:00) [15]

Формирую сложный, дурацкий, с переменным количеством столбцов отчёт. Данных в нём выходит очень много ~30 тыс. строк.
все 30 тыс. строк на печать? ужас...


Наверх

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