powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
25 сообщений из 135, страница 2 из 6
lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
    #38451231
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустама) тест синтетически не чистый (у тебя всегда так)я уже столько раз слышал от тебя упрёки в "синтетической нечистоте", что теперь точно знаю: ты когда-нибудь ОБЯЗАТЕЛЬНО приведёшь здесь, на скл.ру, абсолютно чистый несинтетический тест. Своего изготовления.

Гаджимурадов Рустамб) тест плохо реализован (выводить кривой оператор нужно было сразу, а не с подсказки ДСа).Чем он (show version) кривой, откуда это известно ? И что значит "выводить нужно было СРАЗУ " ? (не понял я тут, объясни еще раз)

Гаджимурадов РустамНо посягать на святое - бесконфликтность
инсертов - не нааадо!... я и не думкал посягать на них. Сейчас запустил этот же тест, 450 молотилок, все делают инсерты. Но убрал из скрипта show version. Оставляю на N часов, по окончании его и посчитаем цыплят посмотрим в логи.
...
Рейтинг: 0 / 0
lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
    #38451232
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ГхостикЯ в оракле недавно наткнулся на блокировку при вставке из-за наличия bitmap индекса. Было больно.OLTP ? ( ибо... )
...
Рейтинг: 0 / 0
lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
    #38451235
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

я посмотрел твой тест. Честно говоря причину конфликта в конкретном скрипте не вижу. Скорее всего эта ошибка прилетела ещё откуда нибудь. Вообще тест конечно запутанный. Вот если бы ты сделал что-то более простое на чём можно было заметить эти конфликты тогда было бы проще.

Сам тест конечно прикольный эмулирует высокую нагрузку по DML.
...
Рейтинг: 0 / 0
lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
    #38451242
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидА не обломился ли он именно от того, что первая команда в скрипте есть show
version ?
Нет. В нём нет телепатии чтобы предвидеть команды, а ошибка у тебя выводится ещё до начала
выполнения скрипта.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
    #38451302
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисВообще тест конечно запутанный. Вот если бы ты сделал что-то более простое на чём можно было заметить эти конфликты тогда было бы проще.Он предназначался для других целей: в 2010 была наивная надежда стабильно воспроизвести с его помощью страшную гадость - missing entries в индексах. Стабильно воспроизвести не получалось, но Влад тогда всё-таки убил эту нечисть. Надеюсь, что навсегда.
Затем этот тест юзался для проверки устойчивости работы ФБ под сильной DML-нагрузкой. Было выявлено несколько траблов А в прошлом году неожиданно вылезла проблема долгой установки коннектов к 2.5, в итоге в этот тест была добавлена "калибрация" скорости коннекта.
Увы, но проблема неожиданных затыков при установке коннектов (доходить может аж до... 600 сек!!) пока не решена, хотя именно её исследование сейчас и ведётся.
Сабж обнаружился вообще случайно: несколько .err-логов имели ненулевой размер. Это я потом уже вспомнил, что видел его раньше.

Ну так вот, докладываю: странное сообщение о конфликте блокировки при insert'ах НЕ связано с наличием оператора show version . Ибо сейчас этот оператор в скрипте закомментарен. А сообщение снова получено. Те же самые 450 молотилок всё-таки мистическим образом "сталкиваются" в каком-то астрале своими инсертами...

Симонов ДенисСам тест конечно прикольный эмулирует высокую нагрузку по DML.У мну в планах есть сбацать настоящий тест, где будет много таблиц, отражающих реальные сущности (изделия, контрагенты, остатки и балансы етц). В него же хочу вкрячить бесконфликтное обновление балансов по "схеме ДСа" (она вроде не им придумана, но ДС её тут показывал), ну и еще несколько фишек, в т.ч. новшеств из ФБ-3.
Но это попозжее.
...
Рейтинг: 0 / 0
lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
    #38451306
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovНет. В нём нет телепатии чтобы предвидеть команды, а ошибка у тебя выводится ещё до начала выполнения скрипта.Если ошибка лезет в ответ на isc_attach_database(), то... откуда ФБ "знает", что скрипт собирается insert'ы делать ?!
...
Рейтинг: 0 / 0
lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
    #38451308
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидТе же самые 450 молотилок всё-таки мистическим образом "сталкиваются" в
каком-то астрале своими инсертами...
Сними fb_lock_print -a и посмотри длины очередей локов к разным страницам. Вполне
возможно, что они сталкиваются не "в астрале", а на header page или TIP.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
    #38451310
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоидоткуда ФБ "знает", что скрипт собирается insert'ы делать ?!
Он и не знает. С чего ты это взял?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
    #38451324
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид> А сообщение снова получено.

То же самое сообщене (lock conflict on no wait tx) ?
И на каком операторе? И приведи текст своего
скрипта без закомментированного show version.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
    #38451395
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

меня настораживает кэш
DefaultDbCachePages = 65000 чего так много

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Database header page information:
        Flags                   0
        Generation              104
        System Change Number    0
        Page size               4096
        ODS version             12.0
        Oldest transaction      94
        Oldest active           95
        Oldest snapshot         95
        Next transaction        96
        Sequence number         0
        Next attachment ID      12
        Implementation          HW=AMD/Intel/x64 little-endian OS=Linux CC=gcc
        Shadow count            0
        Page buffers            0
        Next header page        0
        Database dialect        3
        Creation date           Sep 20, 2013 19:45:47
        Attributes

    Variable header data:
        Sweep interval:         0
        *END*

Page size = 4096 чего так мало
...
Рейтинг: 0 / 0
lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
    #38451439
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovТаблоидТе же самые 450 молотилок всё-таки мистическим образом "сталкиваются" в
каком-то астрале своими инсертами...Сними fb_lock_print -a и посмотри длины очередей локов к разным страницам. Вполне
возможно, что они сталкиваются не "в астрале", а на header page или TIP.Снимок лок-таблицы надо делать именно в тот момент, когда возникает это "нечто", выдающее себя за lock conflict. Предсказать сиё нельзя. Что тогда, снимать каждую секунду ? Всё равно слишком грубая точность. Надо чтобы ФБ сам создавал в таких ситуациях снимок ЛТ и стек-трейс. То есть, нужна какая-то аналогия триггера на это событие и чтобы этот триггер создал нужный лог.
...
Рейтинг: 0 / 0
lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
    #38451440
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovТаблоидоткуда ФБ "знает", что скрипт собирается insert'ы делать ?!
Он и не знает. С чего ты это взял?..ну откудова он тогда берёт текст 'lock conflict on no wait tx' ? какой еще оператор может вызвать его, кроме инсерта ?
...
Рейтинг: 0 / 0
lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
    #38451451
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустамприведи текст своего скрипта без закомментированного show version.в аттаче.
Это большой скрипт, в котором:
1) сначала задаются команды:
Код: plaintext
1.
2.
3.
set warnings off; set sql dialect 3; 
-- temply commented 03-11-2013 12:03 -- show version; 
show database; 
- а затем
2) 30 раз повторяется вот этот фрагмент:
Код: 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.
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.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
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 MIN_ROWS_FOR_INSERTING INT =  50;
declare MAX_ROWS_FOR_INSERTING int = 200;

declare MAX_FLD_VALUE int = 100;
declare v_inserted_cnt int;
declare i int=0;
declare v_result int;
declare v_last_gen type of column tmp.id;
declare v_rnd4err double precision;
declare v_rndval double precision;
declare v_stt varchar(2048);
declare v_log varchar(2048);
declare v_id type of column tmp.id;
declare v_f00 type of column tmp.f00;
declare v_f01 type of column tmp.f01;
declare v_f02 type of column tmp.f02;
declare v_f03 type of column tmp.f03;
declare v_f04 type of column tmp.f04;
declare v_f05 type of column tmp.f05;
declare v_f06 type of column tmp.f06;
declare v_f07 type of column tmp.f07;
declare v_f08 type of column tmp.f08;
declare v_f09 type of column tmp.f09;
declare v_f10 type of column tmp.f10;
declare v_f11 type of column tmp.f11;
declare v_dt1 type of column tmp.dt1;
declare v_act_id type of column log_activity.id = -2147483648;
declare v_dts_beg type of column log_activity.dts_beg;
declare v_dts_end type of column log_activity.dts_end;

declare MIN_TIME_FOR_LOGGING int = 2000;
declare LOWER_THRESHOLD_FOR_ERR double precision = 0; -- 0=no errors, 1=max errors

-- ######################################################################
--  INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT INSERT
-- ######################################################################
begin
 
  msg=
    '-- attach_id='||current_connection||', intro .sql at '
    ||(select cast('now' as timestamp) from rdb$database)
    ||', init gen_test='||gen_id(gen_test,0);
  suspend;

  v_rndval=rand();
  v_rnd4err=rand(); -- error probability
  v_inserted_cnt=MIN_ROWS_FOR_INSERTING + v_rndval * (MAX_ROWS_FOR_INSERTING-MIN_ROWS_FOR_INSERTING);
  v_last_gen=gen_id(gen_test,0);
  msg='-- adding '||v_inserted_cnt||' rows'
      ||', v_rnd4err='||cast(:v_rnd4err as numeric(6,2))
      ||', LOWER_THRESHOLD_FOR_ERR='||cast(LOWER_THRESHOLD_FOR_ERR as numeric(6,2))
      ||', v_last_gen='||v_last_gen
  ;
  suspend;
  v_result=0;
  i=0;
  while (i < v_inserted_cnt and v_result=0) do begin

    if (exists( select * from ext_stoptest )) then -- 20.10.2012
    begin
      msg='test cancelled: external file stoptest has a non-zero size!';
      suspend;
      leave;
    end 
    v_act_id = -2147483648;

    v_id=gen_id(gen_test,1);
    v_f00=rand()*:MAX_FLD_VALUE;
    v_f01=rand()*:MAX_FLD_VALUE;
    v_f02=rand()*:MAX_FLD_VALUE;
    v_f03=rand()*:MAX_FLD_VALUE;
    v_f04=rand()*:MAX_FLD_VALUE;
    v_f05=rand()*:MAX_FLD_VALUE;
    v_f06=rand()*:MAX_FLD_VALUE;

    -- 11.02.2010 1930:
    v_f07=iif(:v_rnd4err < :LOWER_THRESHOLD_FOR_ERR and i>=v_inserted_cnt-1, rand()*:MAX_FLD_VALUE, -:v_id);
    v_f08=iif(:v_rnd4err < :LOWER_THRESHOLD_FOR_ERR and i>=v_inserted_cnt-1, rand()*:MAX_FLD_VALUE, :v_id);

    v_f09=rand()*:MAX_FLD_VALUE;
    v_f10=rand()*:MAX_FLD_VALUE;
    v_f11=rand()*:MAX_FLD_VALUE;
    v_dt1='01.03.2012 03:00:00';
    begin

      msg='insert into tmp(id,f00,f01,f02,f03,f04,f05,f06,f07,f08,f09,f10,f11,dt1)'
            ||' values('
            ||cast(:v_id as varchar(11))||','
            ||cast(:v_f00 as varchar(11))||','
            ||cast(:v_f01 as varchar(11))||','
            ||cast(:v_f02 as varchar(11))||','
            ||cast(:v_f03 as varchar(11))||','
            ||cast(:v_f04 as varchar(11))||','
            ||cast(:v_f05 as varchar(11))||','
            ||cast(:v_f06 as varchar(11))||','
            ||cast(:v_f07 as varchar(11))||','
            ||cast(:v_f08 as varchar(11))||','
            ||cast(:v_f09 as varchar(11))||','
            ||cast(:v_f10 as varchar(11))||','
            ||cast(:v_f11 as varchar(11))||','
            ||''''||cast(:v_dt1 as varchar(30))||''''
            ||'); -- i='||i;

       
      insert into tmp(id,f00,f01,f02,f03,f04,f05,f06,f07,f08,f09,f10,f11,dt1)
      values(:v_id
            ,:v_f00
            ,:v_f01
            ,:v_f02
            ,:v_f03
            ,:v_f04
            ,:v_f05
            ,:v_f06
            ,:v_f07
            ,:v_f08
            ,:v_f09
            ,:v_f10
            ,:v_f11
            ,:v_dt1
          );

        if (i in(0,1) or mod(i,100)=0 or i>=v_inserted_cnt-1 ) then
          suspend; -- 17.03.2012: minimize output

        when any do
        begin

          suspend; -- msg: insert-statement with zero division
          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        
    end
    i=i+1;
  end
  if (v_result=0) then begin
    msg='commit; -- finish adding '||v_inserted_cnt||' rows at '||cast('now' as timestamp)
    ||', i='||i
    ||', curr gen_test='||gen_id(gen_test,0)
    ;
    suspend;
  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;

Пауза между каждым "пакетом" обеспечиается тривиальным батником 'rndpause.bat', который раньше заставлял ждать от 30 до 50 сек, но сейчас всё проще: ping -n 6 127.0.0.1>nul

Скрипт сей вызывается из батника, в цикле, командой:
Код: plaintext
1.
%fb_isql% %fb_testdb% -b -n -now -q -user %fb_usr% -pas %fb_psw% -i t004- %mode% -log.sql 2>&1 1>>%fb_log% | mtee /d/t/+ %fb_err% > nul
(где %mode% в данном варианте теста = строке ins )

В итоге, работа скрипта логируется в somename.txt, а ошибки выполнения - в соотв-щий somename.err, где имя <somename> генерится в батнике через имя компа + режим (%mode%) + номер_запущенного_окна.

Вот пример лога выполнения скрипта:
Код: 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.
-- INSERTING, window # 120. Start  iter # 1 at 12:05:52,67
Database: 192.168.0.220/3330:idx_test
        Owner: SYSDBA
PAGE_SIZE 4096
Number of DB pages allocated = 31388
Sweep interval = 0
Forced Writes are OFF
Transaction - oldest = 23
Transaction - oldest active = 24
Transaction - oldest snapshot = 20
Transaction - Next = 813
ODS = 12.0
Default Character set: WIN1251

-- PACKET # 1:


-- attach_id=143, intro .sql at 2013-11-03 12:05:42.6850, init gen_test=1280777

-- adding 67 rows, v_rnd4err=0.93, LOWER_THRESHOLD_FOR_ERR=0.00, v_last_gen=1280798

insert into tmp(id,f00,f01,f02,f03,f04,f05,f06,f07,f08,f09,f10,f11,dt1) values(1280800,1,71,30,34,75,99,7
4,-1280800,1280800,65,8,43,'2012-03-01 03:00:00.0000'); -- i=0
insert into tmp(id,f00,f01,f02,f03,f04,f05,f06,f07,f08,f09,f10,f11,dt1) values(1280805,17,7,29,78,85,22,5
4,-1280805,1280805,28,86,82,'2012-03-01 03:00:00.0000'); -- i=1
insert into tmp(id,f00,f01,f02,f03,f04,f05,f06,f07,f08,f09,f10,f11,dt1) values(1281094,64,11,80,73,95,11,
7,-1281094,1281094,73,2,79,'2012-03-01 03:00:00.0000'); -- i=66
commit; -- finish adding 67 rows at 2013-11-03 12:05:42.6920, i=67, curr gen_test=1281098



Take some pause at 2013-11-03 12:05:42.7160


Pause is over   at 2013-11-03 12:05:49.6700


-- PACKET # 2:


-- attach_id=143, intro .sql at 2013-11-03 12:05:49.6980, init gen_test=1308588

-- adding 72 rows, v_rnd4err=0.46, LOWER_THRESHOLD_FOR_ERR=0.00, v_last_gen=1308588
 . . . 
...
Рейтинг: 0 / 0
lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
    #38451455
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисDefaultDbCachePages = 65000 чего так многоТестирую SuperServer, что плохого в таком значении ? Памяти на хосте 32 Гб.
Симонов ДенисPage size = 4096 чего так малоДык DML будет фиговее идти (в отличие от селектов), когда размер страницы задран. Я вроде бы ковырял этот вопрос. Но не помню, вываливал сюда результаты или всё так и осталось в кулуаре.
...
Рейтинг: 0 / 0
lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
    #38451458
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидСнимок лок-таблицы надо делать именно в тот момент, когда возникает это
"нечто", выдающее себя за lock conflict.
Не надо. Общая картина очередей не должна сильно меняться. Просто в какой-то момент одна
из и без того длинных очередей ещё чуть-чуть подрастает и - опа! - у кого-то не
выдерживают нервы.

Таблоидну откудова он тогда берёт текст 'lock conflict on no wait tx' ? какой еще
оператор может вызвать его, кроме инсерта ?
Из пальца высасывает. Это всего лишь текстовая интерпретация ошибки, выбрасываемой
лок-менеджером. И как это обычно бывает, выкидываться она может из любого места, вплоть до
не относящегося к транзакциям вообще.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
    #38451459
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамТо же самое сообщене (lock conflict on no wait tx) ?
И на каком операторе?Почти то же самое, отличие только во втором слове
Оператор теперь тот, который "следующий в очереди" после закомментаренного:
Код: plaintext
1.
2.
3.
4.
2013-11-03 18:25:32.096 Statement failed, SQLSTATE = 40001
2013-11-03 18:25:32.096 lock conflict on no wait transaction
2013-11-03 18:25:32.096 After line 0 in file t004-ins-log.sql
2013-11-03 18:25:32.096 Command error:  show database 
Гаджимурадов РустамИ приведи текст своего скрипта без закомментированного show version.См пост выше , аттач.
...
Рейтинг: 0 / 0
lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
    #38451460
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЭто всего лишь текстовая интерпретация ошибки, выбрасываемой
лок-менеджером. И как это обычно бывает, выкидываться она может из любого места, вплоть до
не относящегося к транзакциям вообще.Код ошибки: 40001 - он должен быть "индивидуальным" для этой ситуации или так же будет выброшен "от балды" ?
...
Рейтинг: 0 / 0
lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
    #38451462
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovТаблоидСнимок лок-таблицы надо делать именно в тот момент, когда возникает это "нечто", выдающее себя за lock conflict.
Не надо. Общая картина очередей не должна сильно меняться. Просто в какой-то момент одна
из и без того длинных очередей ещё чуть-чуть подрастает и - опа! - у кого-то не
выдерживают нервы.Ну, и с какой частотой посоветуешь запускать fb_lock_print ? Напомню: молотьба идёт 450 коннектами, только insert'ы, ИНДЕКСЫ ВСЕ УБИТЫ (временно :-)), рост размера базы - примерно 0.7 ... 1.0 Мб в секунду.
...
Рейтинг: 0 / 0
lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
    #38451463
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovИ как это обычно бывает, выкидываться она может из любого места, вплоть до
не относящегося к транзакциям вообще.А это... как его... не может ли она выбрасываться в те моменты, когда ФБ запрашивает у диска место для увеличения размера .fdb ?! А то что-то не вижу в упор, что еще может вызвать сиё...
...
Рейтинг: 0 / 0
lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
    #38451464
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидКод ошибки: 40001 - он должен быть "индивидуальным" для этой ситуации или
так же будет выброшен "от балды" ?
SQLCODE это ещё большая братская могила чем gdscode. А текст ошибки это именно
интерпретация gdscode.

ТаблоидНу, и с какой частотой посоветуешь запускать fb_lock_print ? Напомню:
молотьба идёт 450 коннектами, только insert'ы
Один раз. Когда все окна уже запустились и молотьба идёт в стабильном режиме.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
    #38451466
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидА то что-то не вижу в упор, что еще может вызвать сиё...
Да всё что угодно. У тебя же ОСь не реального времени. Активировался какой-нибудь процесс
и сожрал немного больше ЦПУ или ввода-вывода и вот уже страница сбросилась в кэш на долю
секунды позже. А молотилок много, они выстроились в очередь и у кого-то из них не
выдержали нервы (то бишь случился таймаут) и была выброшена ошибка "не смог дождаться".
Что в переводе и звучит как "lock conflict on no wait transaction".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
    #38451482
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovТаблоидА то что-то не вижу в упор, что еще может вызвать сиё...
Да всё что угодно. У тебя же ОСь не реального времени. Активировался какой-нибудь процесс
и сожрал немного больше ЦПУ или ввода-вывода и вот уже страница сбросилась в кэш на долю
секунды позже. А молотилок много, они выстроились в очередь и у кого-то из них не
выдержали нервы (то бишь случился таймаут) и была выброшена ошибка "не смог дождаться".
Что в переводе и звучит как "lock conflict on no wait transaction".В общем, запустил fb_lock_print -c -a -d ... с логированием и упаковкой каждого лога в отдельный .rar, с интервалом 30 сек. Оставляю до завтрего. Если за ночь появятся новые lock conflict'ы, то сделаю тынц на соотв-щие снимки лок-таблы.
...
Рейтинг: 0 / 0
lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
    #38451486
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... "before I forget" ((C) John Lord' 1982): надо бы запустить эти инсерты БЕЗ вызова gen_id(). Кто его знает, вдруг причина именно в этом...
...
Рейтинг: 0 / 0
lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
    #38451487
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А также без show database, select-ов и пр. ненужного.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
    #38451490
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пофиг. Ни генераторы, ни страницы данных при коннекте не читаются.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 135, страница 2 из 6
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / lock conflict при работе 350 аттачей, делающих только insert'ы. Отчего ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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