powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
10 сообщений из 135, страница 6 из 6
lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
    #38453988
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

письмо пришло. Спасибо.
...
Рейтинг: 0 / 0
lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
    #38454445
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сисдба МастеркеевичЕсли есть подозрение, что виноваты инсерты, надо попробовать без них.Проверил еще и такой вариант:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
set warnings off; set sql dialect 3;
show version;
show database;
set heading off; set list off;
select '-- PACKET # 1:' BEGIN_SECTION from rdb$database; commit;
COMMIT;
SET TRANSACTION READ WRITE READ COMMITTED RECORD_VERSION NO WAIT;
insert into tmp(id,f00,f01,f02,f03,f04,f05,f06,f07,f08,f09,f10,f11,dt1) values(1267083,32,56,70,57,76,6,7
1,-1267083,1267083,69,68,40,'2012-03-01 03:00:00.0000');

<. . . дальше пятьсот аналогичных строк . . .>

commit;

shell rndpause.bat;
set heading off; set list off;
select '-- PACKET # 2:' BEGIN_SECTION from rdb$database; commit;
COMMIT;
SET TRANSACTION READ WRITE READ COMMITTED RECORD_VERSION NO WAIT;
insert into tmp(id,f00,f01,f02,f03,f04,f05,f06,f07,f08,f09,f10,f11,dt1) values(1267083,32,56,70,57,76,6,7
1,-1267083,1267083,69,68,40,'2012-03-01 03:00:00.0000');

<. . . дальше снова пятьсот аналогичных строк . . .>

commit;

shell rndpause.bat;
set heading off; set list off;

<. . . и так далее до 30-го пакета . . .>


Молотьба идёт несколько часов, 450 окон. Сообщений 'lock conflict' или 'invalid password' в .err-логах НЕТ.
Начинает терзать смутное сомнение: а не может ли быть причина в... наличии конструкции "execute block", внутри которой (-го) был цикл с аналогичными insert'ами ?!
Другой кандидатуры вроде бы уже не остаётся...
...
Рейтинг: 0 / 0
lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
    #38454495
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

у тебя в том блоке insert'ы с suspend'ами перемешаны
...
Рейтинг: 0 / 0
lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
    #38455167
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денису тебя в том блоке insert'ы с suspend'ами перемешаныПопробовал пустые execute block'и, без returns(msg varchar(...)) -эффекта нет, ошибка не вылазит.
Сейчас немного усложнил: добавил returns, suspend, но пока без самих insert'ов и без обработчика 'when any':
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
COMMIT;
SET TRANSACTION READ WRITE READ COMMITTED RECORD_VERSION NO WAIT;
set heading off;
set list off;
set term ^;

execute block returns(msg varchar(200)) as
begin
  msg=
    '-- attach_id='||current_connection||', intro .sql at '
    ||cast('now' as timestamp);
    --||', init gen_test='||gen_id(gen_test,0);
  suspend;
end

^set term ;^
commit;

--select 'Take some pause at '||cast('now' as timestamp) msg from rdb$database;
shell rndpause.bat;
--select 'Pause is over   at '||cast('now' as timestamp) msg from rdb$database;

Запустил всё те же 450 молотилок, буду подождать.
(пфф... не ошибка, а оборотень какой-то... хрен поймёшь, когда и на чём вылезет...)
...
Рейтинг: 0 / 0
lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
    #38455189
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоидне ошибка, а оборотень какой-то... хрен поймёшь, когда и на чём вылезет...

Так и будет пока разработчики не разроют эту братскую могилу и не идентифицируют трупы. То
бишь пока не добавят уточняющей информации в сообщение.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
    #38455202
NickDee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид(пфф... не ошибка, а оборотень какой-то... хрен поймёшь, когда и на чём вылезет...)
Инструмент не умеет нормально показывать инфу об ошибках. Главный баг в этом :)
Хорошее решение - научить инструмент нормально показывать инфу об ошибках :)
...
Рейтинг: 0 / 0
lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
    #38455523
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидЗапустил всё те же 450 молотилок, буду подождать....в общем, встречайте, дамы и господа!
Минимальный вариант, на котором мну удалось получить обе ошибки при молотьбе 450 окон: как lock conflict, так и invalid password.
Тест стартовал 06.11.2013 в 21:50, первая из них (lock conflict) случилась 07.11.2013 в 08:29, вторая - только что, в 08:44. Ошибки произошли в разных окнах, более того - на разных компах.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
set warnings off; set sql dialect 3; 
--show version; 
--show database; 
set heading off; set list off;  
select '-- PACKET # 1:' BEGIN_SECTION from rdb$database; commit;  

COMMIT;
SET TRANSACTION READ WRITE READ COMMITTED RECORD_VERSION NO WAIT;
set heading off;
set list off;
set term ^;

execute block returns(msg varchar(200)) as
  declare i int;
  declare v_inserted_cnt int = 200;
  declare v_result int;
begin
  msg=
    '-- attach_id='||current_connection||', intro .sql at '
    ||cast('now' as timestamp);
  suspend;

  i=0;
  while (i < v_inserted_cnt ) do begin

    begin
       msg='insert into tmp(id,f00,f01,f02,f03,f04,f05,f06,f07,f08,f09,f10,f11,dt1) . . .';

       when any do
       begin
          v_result=gdscode;
          msg='rollback; -- ABORT, gds='||v_result
                ||', i='||i
                ||', curr gen_test='||gen_id(gen_test,0)
                ||' at '||cast('now' as timestamp)||': '
                ||decode(v_result, 
                    335544665, 'violation of PK/UK',
                    335544321, 'num/string ovf',
                    335544345, 'lock on no_wait trn', 
                    335544349, 'dup val in idx', 
                    335544334, 'can`t upd erased row',
                    'UNKNOWN'
                );
          suspend;
          leave;
       end -- when any        
    end
    i=i+1;
  end

end

^set term ;^
commit;

--select 'Take some pause at '||cast('now' as timestamp) msg from rdb$database;
shell rndpause.bat;
--select 'Pause is over   at '||cast('now' as timestamp) msg from rdb$database;

----------------------------------------------------------------------------------
-- далее 30 раз повтор вышеприведенного кода, начиная со строки "set heading off; set list off;" --


Теорема доказана. Это были НЕ insert'ы, и это - главное :-)
ЗЫ. Хорошо, что я сегодня долго спал, а то бы вырубил тест в 8 утра, подумав, что снова ничего не прокатит.
...
Рейтинг: 0 / 0
lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
    #38455555
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Со скоростью установки коннектов на этом скрипте - веселуха. Форменная.

TOP-20 тормозов за минувшие 11 часов молотьбы:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
2013-11-07 08:20:22.7815 pure time of connect: 25029 ms, threads: 431
2013-11-07 08:44:44.9117 pure time of connect: 25028 ms, threads: 405
2013-11-07 07:05:08.9659 pure time of connect: 19838 ms, threads: 388
2013-11-07 07:15:00.7115 pure time of connect: 10188 ms, threads: 363
2013-11-07 07:36:25.6019 pure time of connect: 10132 ms, threads: 363
2013-11-07 04:48:35.5960 pure time of connect: 9560 ms, threads: 400
2013-11-07 08:52:11.9958 pure time of connect: 9333 ms, threads: 292
2013-11-07 07:29:41.9147 pure time of connect: 9283 ms, threads: 364
2013-11-07 08:35:55.5977 pure time of connect: 8904 ms, threads: 358
2013-11-07 05:04:06.0054 pure time of connect: 8888 ms, threads: 393
2013-11-07 08:38:12.6344 pure time of connect: 8769 ms, threads: 353
2013-11-07 09:00:39.3052 pure time of connect: 8508 ms, threads: 396
2013-11-07 08:55:52.5943 pure time of connect: 8476 ms, threads: 306
2013-11-07 08:31:43.4005 pure time of connect: 8428 ms, threads: 342
2013-11-07 08:32:09.9356 pure time of connect: 8258 ms, threads: 371
2013-11-07 08:33:32.4729 pure time of connect: 8217 ms, threads: 366
2013-11-07 08:06:23.5047 pure time of connect: 8031 ms, threads: 368
2013-11-07 08:49:02.6714 pure time of connect: 7750 ms, threads: 349
2013-11-07 07:47:23.1614 pure time of connect: 7682 ms, threads: 329
2013-11-07 08:13:46.0201 pure time of connect: 7633 ms, threads: 367

Сколько там выстраивалось в очередь isql'ей в эти пиковые моменты - пока не знаю, надо логи заново парсить и в базу текст загружать. Выложу позже.
...
Рейтинг: 0 / 0
lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
    #38455986
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидTOP-20 тормозов за минувшие 11 часов молотьбы:

Код: plaintext
1.
2.
3.
4.
5.
2013-11-07 08:20:22.7815 pure time of connect: 25029 ms, threads: 431
2013-11-07 08:44:44.9117 pure time of connect: 25028 ms, threads: 405
2013-11-07 07:05:08.9659 pure time of connect: 19838 ms, threads: 388
2013-11-07 07:15:00.7115 pure time of connect: 10188 ms, threads: 363
2013-11-07 07:36:25.6019 pure time of connect: 10132 ms, threads: 363
. . .
Сколько там выстраивалось в очередь isql'ей в эти пиковые моменты - пока не знаю, надо логи заново парситьОбработал логи с моментами времени, непосредственно предшествовавшими загрузкам isql'ей. Не вижу (снова) никакой связи между временем самых одиозных затыков (более 10 сек) в числом isql'ей, пребывавших в очереди на аттач: эта самая "очередь" состояла из 1-2 isql'ей.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
 08:20:22 .7815 pure time of connect:  25029 ms 
SQL> select sec,count(*) cnt from attlog where sec between '08: 20:12 ' and '08: 20:32 ' group by sec ;

08:20:12            2
08:20:14            2
08:20:21            1
08:20:22            1
08:20:23            1
08:20:25            3
08:20:27            1
08:20:28            2

-------

2013-11-07  08:44:44 .9117 pure time of connect: 25028 ms, threads: 405
SQL> select sec,count(*) cnt from attlog where sec between '08: 44:34 ' and '08: 44:54 ' group by sec ;

08:44:39            1
08:44:40            1
08:44:50            2

-------

2013-11-07  07:05:08 .9659 pure time of connect: 19838 ms, threads: 388
SQL> select sec,count(*) cnt from attlog where sec between '07: 04:58 ' and '07: 05:18 ' group by sec ;

07:04:58            2
07:04:59            2
07:05:00            3
07:05:01            1
07:05:02            1
07:05:06            1
07:05:08            2
07:05:09            1
07:05:10            1
07:05:11            2
07:05:12            1
07:05:14            2
07:05:18            3

-------

2013-11-07  07:15:00 .7115 pure time of connect: 10188 ms, threads: 363
SQL> select sec,count(*) cnt from attlog where sec between '07: 14:50 ' and '07: 15:10 ' group by sec ;

07:14:50            2
07:14:51            1
07:14:52            3
07:14:53            1
07:14:54            2
07:14:55            4
07:14:57            3
07:14:58            5
07:14:59            2
07:15:00            5
07:15:01            4
07:15:02            3
07:15:03            5
07:15:04            3
07:15:05            5
07:15:06            3
07:15:07            3
07:15:08            4
07:15:10            2

-------

2013-11-07  07:36:25 .6019 pure time of connect: 10132 ms, threads: 363
SQL> select sec,count(*) cnt from attlog where sec between '07: 36:15 ' and '07: 36:35 ' group by sec ;

07:36:16            1
07:36:17            1
07:36:18            1
07:36:19            1
07:36:20            1
07:36:21            3
07:36:22            3
07:36:23            3
07:36:24            1
07:36:25            1
07:36:26            4
07:36:27            5
07:36:28            3
07:36:29            2
07:36:30            1
07:36:31            2
07:36:32            2
07:36:33            6
07:36:34            5
07:36:35            2
Дальше этот "артефакт" исследовать без Источников Света бессмысленно. Что-то где-то глубоко внутри сидит.
...
Рейтинг: 0 / 0
lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
    #38462612
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ищущий да обрящет... Это всё-таки случилось! :-)
...
Рейтинг: 0 / 0
10 сообщений из 135, страница 6 из 6
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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