powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / DML (del+ins в GTT), длинный цикл: невозм. подключиться к базе(2.5) или срубить его (3.0)
11 сообщений из 11, страница 1 из 1
DML (del+ins в GTT), длинный цикл: невозм. подключиться к базе(2.5) или срубить его (3.0)
    #38824116
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hi all

DDL:
Код: plaintext
1.
recreate global temporary table gtt(id int) on commit delete rows;
commit;

Test
(запускал из-под IBE, но вряд ли будет по-другому в isql'e):
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
execute block as
declare n int = 1000000;
declare i int = 0;
begin
    while( i < n) do begin
        i = i + 1;
        delete from gtt;
        insert into gtt(id) values(:i);
    end
end



Если теперь в другом окне:
1) попробовать выполнить коннект-дисконнект, с показом времени:

Код: plaintext
1.
2.
3.
4.
5.
6.
@echo off
echo before   connect: %time%
echo quit;>tmp.tmp
isql 192.168.0.220/3333:oltp30 -pag 0 -i tmp.tmp
del tmp.tmp 2>nul
echo after disconnect: %time%

- то:
1.1) в LI-V6.3.3.26790 всё застрянет уже на попытке коннекта;
1.2) в LI-T6.3.0.31456 коннект/дисконнект отработает мгновенно;

2) попробовать выполнить delete from mon$attachments (и тем паче from mon$statements), то в 3.0 никакой реакции на это не будет. Первое окно так и продолжит молотьбу.

Проверьте у себя кто-нить, плз: у вас - так же ?
...
Рейтинг: 0 / 0
DML (del+ins в GTT), длинный цикл: невозм. подключиться к базе(2.5) или срубить его (3.0)
    #38824121
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(0xFF, неохота новый топег делать)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
execute block as
declare n int = 10000; --0000;
declare i int = 0;
begin
  delete from gtt;
  insert into gtt(id) values(:i);
  while( i < n) do begin
    i = i + 1;
    update gtt set id=:i;
  end
end
Число фетчей в 12 (двенадцать!) раз будет больше числа итераций :n.
Если же вот так: update gtt set id=:i rows 1; - то в 9 (девять) раз.

Что ему там надо фетчить столько раз на обновлении одной записи, при условии, что никаких индексов нету ?!
...
Рейтинг: 0 / 0
DML (del+ins в GTT), длинный цикл: невозм. подключиться к базе(2.5) или срубить его (3.0)
    #38824125
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PS. По стартовому примеру выяснил удивительнейшую весчь. Число фетчей равно квадрату числа итераций блин... Вешалка.
...
Рейтинг: 0 / 0
DML (del+ins в GTT), длинный цикл: невозм. подключиться к базе(2.5) или срубить его (3.0)
    #38824128
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидЧто ему там надо фетчить столько раз на обновлении одной записи, при
условии, что никаких индексов нету ?!
Несуществующую вторую запись.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
DML (del+ins в GTT), длинный цикл: невозм. подключиться к базе(2.5) или срубить его (3.0)
    #38824132
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидЕсли же вот так: update gtt set id=:i rows 1 ; - то в 9 (девять) раз.А здесь тогда что ?
...
Рейтинг: 0 / 0
DML (del+ins в GTT), длинный цикл: невозм. подключиться к базе(2.5) или срубить его (3.0)
    #38824143
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидА здесь тогда что ?
А здесь он и не пытается фетчить вторую запись, поскольку ты ему ясно сказал, что хватит
одной.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
DML (del+ins в GTT), длинный цикл: невозм. подключиться к базе(2.5) или срубить его (3.0)
    #38824146
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это я понимаю. Откудова тут ДЕВЯТЬ фетчей на апдейт одной записи ?
...
Рейтинг: 0 / 0
DML (del+ins в GTT), длинный цикл: невозм. подключиться к базе(2.5) или срубить его (3.0)
    #38824158
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидОткудова тут ДЕВЯТЬ фетчей на апдейт одной записи ?
Так работает update_in_place().
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
DML (del+ins в GTT), длинный цикл: невозм. подключиться к базе(2.5) или срубить его (3.0)
    #38824196
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидЧто ему там надо фетчить столько раз на обновлении одной записи, при условии, что никаких индексов нету ?!

думаю что версии, которые плодятся
...
Рейтинг: 0 / 0
DML (del+ins в GTT), длинный цикл: невозм. подключиться к базе(2.5) или срубить его (3.0)
    #38824197
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7mТаблоидЧто ему там надо фетчить столько раз на обновлении одной записи, при условии, что никаких индексов нету ?!

думаю что версии, которые плодятсяне, не могут они там плодиться. Можно делать 100500 раз update-in-place, но версий будет создано ровно одна.
...
Рейтинг: 0 / 0
DML (del+ins в GTT), длинный цикл: невозм. подключиться к базе(2.5) или срубить его (3.0)
    #38824229
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидМожно делать 100500 раз update-in-place, но версий будет создано ровно одна.

Да. И именно поэтому надо новую версию записать, старую стереть. Вот так фетчи и набегают.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / DML (del+ins в GTT), длинный цикл: невозм. подключиться к базе(2.5) или срубить его (3.0)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]