Форум: "Базы";
Текущий архив: 2004.02.13;
Скачать: [xml.tar.bz2];
ВнизrxMemoryDataSet Найти похожие ветки
← →
SasaR (2004-01-20 19:00) [0]Здравствуйте :))
Формирую сложный, дурацкий, с переменным количеством столбцов отчёт. Данных в нём выходит очень много ~30 тыс. строк.
Фетчу из базы и заполняю сабж. В одном из вопросов прозвучал ответ, что, мол, сабж на больших объемах тормозит. Скорее всего так оно и есть. Вопрос - есть ли альтернатива сабжу и если да, то какая ?
← →
Семен Сорокин (2004-01-20 19:06) [1]Формирую сложный, дурацкий, с переменным количеством столбцов отчёт. Данных в нём выходит очень много ~30 тыс. строк.
все 30 тыс. строк на печать? ужас...
← →
SasaR (2004-01-20 19:15) [2]Нет, все 30 тыс. строк в Quantium-гриде, для кропотливого анализа и исследования. К тому-же там - практически мгновенный (но глюкавый в строке сумм) экпорт в Эксель для тех же целей.
Хоть плачь - почти 17 мин происходит myGrid.DataSource:= rxMemoryDataset;myGrid.OptionsDB = ...+[edgoLoadAllRecord];
Может это и грид тормозит, а может и сабж...
От грида избавится или убрать "+[edgoLoadAllRecord]" не хочется - уж больно хорош он в плане фильтров и сортировки..
А вот может замена сабжа на альтернативу может ускорит это всё....
← →
Sergey13 (2004-01-21 09:19) [3]2SasaR (20.01.04 19:15) [2]
>Нет, все 30 тыс. строк в Quantium-гриде, для кропотливого анализа и исследования.
Вручную исследуешь? Т.е. визуально? И как? До конца когда нибудь доходил? 8-)
Может тебе стоит подумать над реализацией анализа на сервере в ХП и выдаче на клиента только результатов этого анализа?
← →
Dred2k (2004-01-21 09:40) [4]> SasaR (20.01.04 19:00)
Альтернатива очевидна - TClientDataSet, обязательно с отключенной историей изменений (LogChanges := False).
Я сам ранее пользовал сабж, но после некоторых экспериментов убедился в оптимальности TClientDataSet - и по скорости, и по возможностям.
← →
Danilka (2004-01-21 10:35) [5][4] Dred2k © (21.01.04 09:40)
На самом деле, альтернатива в другом. %))
В том, что никакой анализ 30 тысяч строк в гриде невозможен. Тем более "кропотливый".
Перед тем как забирать записи с сервера, надо уточнить у юзера: что конкретно ему нужно, и забрать только это.
Чем меньше записей - тем более эффективна работа юзера - это аксиома, работающая даже с мегаюзерами. :))
← →
Danilka (2004-01-21 10:38) [6]Наверняка, по-сторонам грида навешаны всякие кнопочки с фильтрами по-полям грида, суммами, сортировками и т.д. И "кропотливый анализ" на самом деле и есть - использование этих кнопочек. :))
И все что нужно - использовать эти кнопочки до того, как забираешь данные, а не после того. :))
← →
VAleksey (2004-01-21 11:26) [7]Ты грид - то отключи нафиг на время обработки данных.
← →
Dred2k (2004-01-21 11:42) [8]> Danilka © (21.01.04 10:35) [5]
> На самом деле, альтернатива в другом. %))
И в датасете тоже, хотя сама необходиомость такого экстремального "анализа" мне, мягко говоря, непонятна.
Что-то тут с постановкой не то...
← →
Term (2004-01-21 11:47) [9]
> для кропотливого анализа и исследования
если ты или юзер, все 30000 строк кропотливо анализируеш!!!
то нафига ваще СУБД, программа и программист!!!
делайте всё руками на счётах костяшки перебрасывая, кропотливей чем так не получиться... или я чтото не понимаю, особенно фразу взятую в качестве цитаты
← →
Desdechado (2004-01-21 12:00) [10]это я говорил о тормозах rxMemoryDataset
там же я говорил о том, что нет необходимости перекачивать из обычного датасета в другой только для того, чтобы сделать экспорт или показать в гриде.
Зачам эти манипуляции? Что они дают?
← →
SasaR (2004-01-21 13:44) [11]To Dred2k - Спасибо !!!
Таки да !!! Вместо 17 мин - 20 сек !!!
To Sergey13 - слава богу не я буду анализировать. Насчет анализа на сервере я "долго" думал :)
Просто отчёт вида:
(клиент 1 на дату 1) (клиент 1 на дату 2) и т.д.
строка 1
строка 2
...
строка N
Сколько клиентов - неизвестно и дат этих клиентов - тоже.
Задаются вначале пользователем.
Я не знаю заранее количество столбцов. Ib серверу я такое не передам, да и не сможет он вернуть из сторед прц такой набор данных.
Вот и получаю я столбцы отдельно и накапливаю теперь уже в TClientDataSet :))
Может можно изящней и оптимальнее ??? А ?
← →
SasaR (2004-01-21 13:55) [12]Ох Вы и прицепились к клише "кропотливого анализа". На самом деле с помощью вышеупомянутых "кнопочек" в таком здоровенном наборе данных легко найти что-то и сделать соотв. выводы.
Исх. данные - ~ 1 млн. строк из которых в ходе группировки и всяких извратов получ 30 тыс.
Запрос к такой таблице, даже с минимальными условиями долог...
Поэтому и локальный грид. Но раз пользователь уже в гриде и посидел 15 мин и получил такой набор - пусть фильтрует, сортирует, экспортирует в Excel, dbf(если строк > 65535).
Если бы не вы, с вашими ответами, сидел бы он сутки :))
Прогресс - налицо, спасибо Нам всем :)
← →
SasaR (2004-01-21 15:14) [13]gобочный эффект....
Апликуха использует 400Mb оперативной (памяти) даже при использовании TClientDataSet.LogChanges:=false....
при rxMemoryDataSet было 20Mb...
Как побороть ?
← →
SasaR (2004-01-21 15:38) [14]Поборол ...
Кому интересно - строка типа
ClientDataSet.FieldDefs.Add(F.Name,ftInteger,0,false) не нужна - из-за неё росла память!!!
Нужно - как в хеплпе :))
← →
Term (2004-01-21 15:47) [15]
> Нужно - как в хеплпе :))
естественно, а для чего же еще тогда хелпы пишут, не шутки же ради :)))
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.02.13;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c