Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.48 MB
Время: 0.01 c
3-38745
Pisar
2004-01-21 12:05
2004.02.13
Как программно связать master и detail?


1-38845
Mazer
2004-02-02 15:34
2004.02.13
Как добавить в стандартное контекстное меню свои пункты?


3-38687
3APA3A
2004-01-23 18:27
2004.02.13
Выборка, нечуствительная к регистру букв...


14-39004
TUser
2004-01-27 10:00
2004.02.13
Delphi8


8-38967
scooterfun
2003-10-12 02:53
2004.02.13
Преобразование WAV в MP3





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский