Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / DML (del+ins в GTT), длинный цикл: невозм. подключиться к базе(2.5) или срубить его (3.0) / 11 сообщений из 11, страница 1 из 1
03.12.2014, 20:05
    #38824116
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DML (del+ins в GTT), длинный цикл: невозм. подключиться к базе(2.5) или срубить его (3.0)
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
03.12.2014, 20:13
    #38824121
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DML (del+ins в GTT), длинный цикл: невозм. подключиться к базе(2.5) или срубить его (3.0)
(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
03.12.2014, 20:17
    #38824125
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DML (del+ins в GTT), длинный цикл: невозм. подключиться к базе(2.5) или срубить его (3.0)
PS. По стартовому примеру выяснил удивительнейшую весчь. Число фетчей равно квадрату числа итераций блин... Вешалка.
...
Рейтинг: 0 / 0
03.12.2014, 20:20
    #38824128
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DML (del+ins в GTT), длинный цикл: невозм. подключиться к базе(2.5) или срубить его (3.0)
ТаблоидЧто ему там надо фетчить столько раз на обновлении одной записи, при
условии, что никаких индексов нету ?!
Несуществующую вторую запись.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
03.12.2014, 20:24
    #38824132
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DML (del+ins в GTT), длинный цикл: невозм. подключиться к базе(2.5) или срубить его (3.0)
ТаблоидЕсли же вот так: update gtt set id=:i rows 1 ; - то в 9 (девять) раз.А здесь тогда что ?
...
Рейтинг: 0 / 0
03.12.2014, 20:38
    #38824143
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DML (del+ins в GTT), длинный цикл: невозм. подключиться к базе(2.5) или срубить его (3.0)
ТаблоидА здесь тогда что ?
А здесь он и не пытается фетчить вторую запись, поскольку ты ему ясно сказал, что хватит
одной.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
03.12.2014, 20:41
    #38824146
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DML (del+ins в GTT), длинный цикл: невозм. подключиться к базе(2.5) или срубить его (3.0)
Это я понимаю. Откудова тут ДЕВЯТЬ фетчей на апдейт одной записи ?
...
Рейтинг: 0 / 0
03.12.2014, 20:54
    #38824158
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DML (del+ins в GTT), длинный цикл: невозм. подключиться к базе(2.5) или срубить его (3.0)
ТаблоидОткудова тут ДЕВЯТЬ фетчей на апдейт одной записи ?
Так работает update_in_place().
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
03.12.2014, 21:50
    #38824196
m7m
m7m
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DML (del+ins в GTT), длинный цикл: невозм. подключиться к базе(2.5) или срубить его (3.0)
ТаблоидЧто ему там надо фетчить столько раз на обновлении одной записи, при условии, что никаких индексов нету ?!

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

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

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


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