Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.08.19;
Скачать: CL | DM;

Вниз

Господа. помогите с транзакциями на InterBase...   Найти похожие ветки 

 
VL ©   (2002-07-29 12:33) [0]

Может я чего-то не то делаю, но что-то не получается (если можно, помогите конкретным примером)

пишу вставку строки в таблицу

while not query0.eof do
begin
query1.sql.clear;
query1.sql.add("insert into TABLE values (:p0,:p1,:p2,:p3)");
query1.params[0].asinteger := 1;
...
query1.params[3].asstring := "1";
query1.execsql;
end;

сей код в начале вставляет очень быстро, а потом замедляется,замедляется и замедляется.
Причем, замедляется именно на INSERT - если его зеремить, замедления не происходит.
Как убрать это замедление (если можно с примером)


 
ЮЮ   (2002-07-29 12:37) [1]

Зачем внутри цикла-то ???
query1.sql.clear;
query1.sql.add("insert into TABLE values (:p0,:p1,:p2,:p3)");
query1.params[0].asinteger := 1;
...
query1.params[3].asstring := "1";


while not query0.eof do
begin
query1.params[1].asinteger := 1;
query1.params[2].asstring := "1";

query1.execsql;
end;


 
BAY ©   (2002-07-29 12:45) [2]

Попробуй свести к минимуму кол-во запрсов. Т.е. сначало составь весь запрос
insert into ...
insert into ...
...
insert into ...
а потом все разом всавь. Намного бысрее получиться.


 
Alexandr ©   (2002-07-29 12:49) [3]

а сколько записей-то вствляешь примерно, когда замедление начинает проявляться? 100? 1000? 10000? 1000000?


 
S@shka ©   (2002-07-29 13:29) [4]

Предлагается делать следующее :)
Насколько я могу судить операцию INSERT необходимо подтверждать
IBTransaction1.StartTransaction;
{твой код}
........
{конец кода}
IBtransaction1.Commit;


 
VL ©   (2002-07-29 13:36) [5]

Записей может быть до 200тыс.

По поводу транзакций - идет ругня, непомню точно, но толи DataBase not in insert mode, толи edit mode, вообщем ругается.

Если у кого-то есть работающий пример транзакции - дайте.


 
VL ©   (2002-07-29 13:38) [6]

ЮЮ - а помогает?


 
VL ©   (2002-07-29 13:41) [7]

ЮЮ - а если когда нет строки - она инсертится, а когда есть - апдэйтится, тогда это не прокатывает.

Тут нада транзакции открывать - а не получается.
Если у кого-то есть работающий пример - дайте.


 
BAY ©   (2002-07-29 13:43) [8]

IBtransaction1.CommitRetaining - и ругаться не будет.
IBTransaction1.StartTransaction - а это и не надо тогда, (достаточно один раз)


 
ЮЮ   (2002-07-29 13:45) [9]

Естественно, для того и придуман прараметрический запрос, чтобы использовать параметры, а не переписывать заново.
Но и насчет транзакций - тоже дельный совет. Раза в 2 уменьшит время.
Ну, и наконец, может продумать INSET запрос для всех записей, дабы избавиться от цикла в программе?


 
VL ©   (2002-07-29 13:48) [10]

BAY
кто такой IBtransaction1


 
BAY ©   (2002-07-29 13:59) [11]

>>VL © (29.07.02 13:48)
IBTransaction1.CommitRetaining вместо IBTransaction1.Commit


 
VL ©   (2002-07-29 14:27) [12]

BAY
IBtransaction1 - это компонента, переменная или что?




Страницы: 1 вся ветка

Текущий архив: 2002.08.19;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.02 c
7-60882
Oleg_er
2002-06-03 15:33
2002.08.19
Кто использует файл на серваке?


6-60795
Wather
2002-06-05 23:47
2002.08.19
Помогите разобраться!


3-60537
NDR
2002-07-30 08:57
2002.08.19
Упаковка dBAse таблиц


14-60819
SuperIgor
2002-07-24 10:26
2002.08.19
Proxy Server Очень нужна помощь!!!!


1-60563
kronprince
2002-08-07 17:27
2002.08.19
Дружественный класс