Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.04;
Скачать: [xml.tar.bz2];




Вниз

Как сделать прогу с IBX пошустрее? 


Fareader   (2002-01-03 16:11) [0]

ПРивет всем. Попробовал перевести прогу из под BDE-шных компонентов на IBX - думал будет быстрее бегать, но скорость упала. В чем прикол?



evgeg   (2002-01-03 22:26) [1]

А конкретнее?



Fareader   (2002-01-04 10:57) [2]

Конкретнее: операции изменения записей и обновление IBQuery проходят гораздо медленее, чем с TQuery.



Alexandr   (2002-01-04 11:38) [3]

как это?
здесь бы привел как там и как там.

Чудес не бывает.



Fareader   (2002-01-04 11:57) [4]

Это с IBX
if nak_query.state=dsedit then nak_query.post;

if not write_trans.intransaction then write_trans.starttransaction;

Temp_query.close;
Temp_Query.sql.clear;
Temp_Query.sql.add("update nak set state_nak= :state_nak,");
Temp_Query.sql.add("vozvrat= :vozvrat");
Temp_Query.sql.add("where num_nak= :num_nak");
Temp_Query.parambyname("state_nak").asinteger:=3;
Temp_Query.parambyname("num_nak").asinteger:=yar_query.fieldbyname("num_nak").asinteger;
Temp_Query.parambyname("vozvrat").asinteger:=strtoint(label13.caption);
Temp_Query.execsql;

try
if nak_query.updatespending then
if not write_trans.intransaction then write_trans.starttransaction;

if nak_query.updatespending then begin
nak_query.ApplyUpdates;
sum_nak_query.CancelUpdates;
end;

if write_trans.intransaction then write_trans.commit;

ref:=true;

except
if write_trans.intransaction then write_trans.rollback;
nak_query.cancelupdates;
ref:=false;
messagedlg("



Fareader   (2002-01-04 17:33) [5]

Ну как есть идеи?



Alexandr   (2002-01-08 08:59) [6]

1)yar_query в IBX ты переоткрываешь, да еще и FetchAll, а в BDE нет.
2) в IBX ты создаешь дапрос на изменение, и запускаешь его каждый раз вручную, в результате чего в IBX в yar_query у тебя данные сами не меняются, поэтому тебе его приходится переоткрывать
а в BDE ты используешь cached Updates, поэтому у тебя изменения сразу в yar_query появляются и переотрытие делать ненадо.
в общих чертах так.
да, и еще в IBX заведи две транзакции- читающую и пишущую



Fareader   (2002-01-08 10:24) [7]

Ладно все это чудесно, но почему один и тот же запрос на выборку в IBX исполняется намного дольше, чем в BDE?

select nak.num_nak, nak.kod_pl, nak.kod_gr, nak.num_yar, nak.date_smena, nak.date_in, nak.date_out, nak.vozvrat, nak.state_nak, nak.all_sht, nak.cls_smen, nak.cls_month, nak.num_nak_u,
yar.graf, yar.ezd, yar.drive_y, yar.id, yar.kod_cx,
yar.date_print as yar_print
from (nak left join yar on nak.num_yar=yar.id)
where
nak.state_nak between :b_state and :e_state and nak.state_nak<>0
or (nak.B_Smena_F= :b_period and nak.E_Smena_F= :e_period
and nak.state_nak between :b_fakt and :e_fakt )

order by nak.num_yar

Да, транзакции итак две - пишущая и читающая.



Alexandr   (2002-01-08 10:39) [8]

такого не может быть.
если только дело не в FetchAll
проверь в IBX и в BDE должно быть одинаково.
или уж и там и там сделай лишний раз.
Лишний раз тормозить уже совсем не будет, а сделан FetchAll будет точно.
пропиши после открытия
DataSet.Open;
DataSet.FetchAll;



Павел2   (2002-01-08 11:36) [9]

а еще можешь взять FIBPlus версии 4.4.12 или старше и сделать FetchAll в них и в IBX - сравнишь время и обьем отожранной памяти - еще ~20-30% сэкономишь



Alexandr   (2002-01-08 12:01) [10]

угу
или 4.5.1



Romkin   (2002-01-08 12:18) [11]

А FibPlus работает с MIDAS? или по-прежнему нет?



Alexandr   (2002-01-08 12:22) [12]

4.5.1 уже как-то работает.
см. на fibplus.com.ua
у них там даже примеры есть...



Fareader   (2002-01-08 13:54) [13]

Сэкономлю что, память или быстрее будет?
Я реханусь все с IBX на FIBC переводить.



Alexandr   (2002-01-08 14:01) [14]

и то и другое.
Да ладно , если рехнешся, то не переводи.
ну и как быстродействие?
разобрался?



Fareader   (2002-01-08 14:15) [15]

Да, через yar_query запустил изменения - пошло быстрее. Только чего фильтр через OnFilterRecord иногда протормаживает, он чего заново запрос читает и отбирает то чего в фильтре записано?



Alexandr   (2002-01-09 07:00) [16]

х.з. этот IBX




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.04;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.74 MB
Время: 0.034 c
1-8872            IronHawk              2002-01-15 18:30  2002.02.04  
ОКРУГЛЕНИЕ ! ! ! . . .


1-8917            Eraser                2002-01-17 09:13  2002.02.04  
Расположение фрейма на форме


14-8997           NA                    2001-12-08 21:01  2002.02.04  
>NA О нике.


14-8976           Nikolay               2001-12-12 20:27  2002.02.04  
Откачали........


1-8906            tovSuhov              2002-01-17 10:44  2002.02.04  
Вот такая проблема...