Главная страница
    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.46 MB
Время: 0.005 c
1-60553
SinnerPro
2002-08-06 02:32
2002.08.19
Глюка с ListView


1-60646
Link
2002-08-08 21:54
2002.08.19
Shell Link


1-60634
Relaxer
2002-08-08 14:29
2002.08.19
Хелп.


1-60749
TAN_K
2002-08-07 13:36
2002.08.19
Работа с ComboBox - чайник - 1 программа в Delphi


14-60839
Инопланетянин
2002-07-24 14:24
2002.08.19
На Землю летит X-метровый НЛО





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