Форум: "Базы";
Текущий архив: 2002.08.19;
Скачать: [xml.tar.bz2];
ВнизГоспода. помогите с транзакциями на 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.007 c