Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.006 c
14-60848
Zergling
2002-07-25 09:04
2002.08.19
как эффективней путешествовать по интернету???


1-60635
Invega
2002-08-08 19:38
2002.08.19
Как в MainMenu сделать...


1-60562
aaasv
2002-08-06 17:32
2002.08.19
TWordApplication


4-60909
INCOGNITO
2002-06-16 18:38
2002.08.19
Путь до моего приложения


3-60494
Старик
2002-07-29 13:58
2002.08.19
Структура таблиц





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