![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Медленно работает CDS [D7]
Juice © (2006-09-15 15:45:00)В CDS загружаются данные из другого CDS и затем я оперирую этими данными в нем - передвигаюсь и редактирую то что надо изменить. Все это происходит в памяти и в базу попасть не должно. Проблема в том что при маленьких обьемах данных (100 записей например) очень большие задержки при вызове Post - около 0.5-1 сек . Например мне нужно пробежаться по ста записям и в поле где 1 поставить 0, и это занимает около 70 секунд! Что подскажите, что можно отключить, как повлиять, может кто-то сталкивался с таким?
Shaman_ (2006-09-18 12:43:00) [1]>ChangeLog решило проблему
Вообще кэширование изменений не должно так сильно влиять на производительность. Может такое проявляется если записи очень "Тяжелые"...? Допустим большие записи в Blob полях
Juice (2006-09-18 11:08:00) [2]
> Shaman_ © (16.09.06 12:30) [6]
> 2 Shaman_ © (15.09.06 17:24) [4]
>
> Такой же нелепый как изложеная автором проблема.
Спасибо за помощь, но насчет нелопости ты тут погарячился. Отключение ChangeLog решило проблему. А так, навскидкуTestCDS := TClientDataSet.Create(nil);надо бы перед try.
Shaman_ (2006-09-16 12:30:00) [3]2 Shaman_ © (15.09.06 17:24) [4]
Такой же нелепый как изложеная автором проблема. У автора метод Post в маленьких наборах данных CDS выполняется 0,5-1 секунд
Этот код собственно и есть маленький набор данных с методом Post на insert и edit
Fay (2006-09-16 04:52:00) [4]2 Shaman_ © (15.09.06 17:24) [4]
Нелепый код
Shaman_ (2006-09-15 17:24:00) [5]Какой результат выдаст этот код?
procedure SpeedCalc;
var
TestCDS: TClientDataSet;
i: Integer;
StartDateTime,FinallyDateTime: TDateTime;
begin
try
TestCDS := TClientDataSet.Create(nil);
TestCDS.FieldDefs.Add('Field1',ftInteger);
TestCDS.CreateDataSet;
StartDateTime := Date+Time;
for i := 0 to 100 do
begin
TestCDS.Insert;
TestCDS.FieldByname('Field1').AsInteger := i;
TestCDS.Post;
end;
TestCDS.First;
while not TestCDS.Eof do
begin
TestCDS.Edit;
TestCDS.FieldByName('Field1').AsInteger := 100;
TestCDS.Post;
TestCDS.Next;
end;
FinallyDateTime := Date+Time;
ShowMessage('Время старта: '+DateTimeToStr(StartDateTime)+#10+'Конечное время: '+DateTimeToStr(FinallyDateTime));
finally
FreeAndNil(TestCDS);
end;
end;
Juice (2006-09-15 16:52:00) [6]
> Механизм?
Data := Data
Shaman_ (2006-09-15 16:15:00) [7]Нужна более детальная картина. Здесь проблема не в скорости CDS, а в чем то другом
Desdechado (2006-09-15 15:57:00) [8]> В CDS загружаются данные из другого CDS
Механизм?