powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Проблема Lock conflict on nowait transaction при Insert
23 сообщений из 23, страница 1 из 1
Проблема Lock conflict on nowait transaction при Insert
    #38961344
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую!

Сегодня получил интересную проблему, под нагрузкой (коннектов около 100) сервер начал сыпать ошибку "Lock conflict on nowait transaction" в разных триггерах которые инсертят данные в одну протоколирующиую табличку (она не очень большая ок. 4 млн записей всего). После того, как выгнал всех операторов (delete from mom$attachments) жисть наладилась, хоть и повизжали немного.

Собственно вопросы:
1. Откуда берется лок конфликт на инсерте?
2. Что делать когда "оно" наступило?
3. Что сделать что "оно" впредь не наступало?

fb 2.5.3, 64 бит, линукс, база порядка 45 гиг, судя по top память/процы нагружены, но чрезмерно, в своп не лезет.

TempCacheLimit = 33554432
LockMemSize = 7048576
LockHashSlots = 30011
...
Рейтинг: 0 / 0
Проблема Lock conflict on nowait transaction при Insert
    #38961365
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вторым будешь: http://www.sql.ru/forum/1115385/lock-conflict-mezhdu-insert-i-delete?hl=
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Проблема Lock conflict on nowait transaction при Insert
    #38961373
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevsky,

0. Ты 100% уверен, что сбойный оператор - именно инсерт ? Там своих триггеров нет ?
Полное сообщение об ошибке можно увидеть ?
В лог заглядывал (на всякий) ?

Если 146% за инсерт, то
1. PK\UK\FK у этой таблицы есть ?
...
Рейтинг: 0 / 0
Проблема Lock conflict on nowait transaction при Insert
    #38961375
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вторым так вторым, я не против.

В логе ФБ чисто (штатные записи о сработавшем ночером свипе и немного 104, далеко от времени затыка)
...
Рейтинг: 0 / 0
Проблема Lock conflict on nowait transaction при Insert
    #38961376
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovВторым будешь: http://www.sql.ru/forum/1115385/lock-conflict-mezhdu-insert-i-delete?hl= Воспроизводить пробовали ? Не удалось ? Больше не возникало ?
...
Рейтинг: 0 / 0
Проблема Lock conflict on nowait transaction при Insert
    #38961379
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DDL
Код: 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.
/******************************************************************************/
/***               Generated by IBExpert 18.05.2015 12:07:47                ***/
/******************************************************************************/

/******************************************************************************/
/***      Following SET SQL DIALECT is just for the Database Comparer       ***/
/******************************************************************************/
SET SQL DIALECT 3;



/******************************************************************************/
/***                                 Tables                                 ***/
/******************************************************************************/



CREATE TABLE Z_LOG_TABLE (
    Z_ID     NUMERIC(18,0) NOT NULL,
    ZZ_ID    NUMERIC(18,0) DEFAULT 0 NOT NULL,
    LOG_ID   NUMERIC(18,0) DEFAULT 0 NOT NULL,
    MODE     SMALLINT DEFAULT 0 NOT NULL,
    L_TABLE  VARCHAR(20) NOT NULL,
    L_OPER   SMALLINT NOT NULL,
    L_DATE   DATE DEFAULT CURRENT_DATE NOT NULL,
    L_TIME   TIME DEFAULT CURRENT_TIME NOT NULL,
    L_AUTOR  VARCHAR(20) DEFAULT CURRENT_USER NOT NULL,
    SQLTEXT  VARCHAR(8192) NOT NULL COLLATE PXW_CYRL
);




/******************************************************************************/
/***                              Primary keys                              ***/
/******************************************************************************/

ALTER TABLE Z_LOG_TABLE ADD CONSTRAINT PK_Z_LOG_TABLE PRIMARY KEY (Z_ID);


/******************************************************************************/
/***                                Indices                                 ***/
/******************************************************************************/

CREATE INDEX ZZ_ID_IDX ON Z_LOG_TABLE (ZZ_ID);
CREATE INDEX Z_LOG_TABLE_IDX_L_DATE ON Z_LOG_TABLE (L_DATE, L_TIME);


/******************************************************************************/
/***                          Fields descriptions                           ***/
/******************************************************************************/

COMMENT ON COLUMN Z_LOG_TABLE.L_TABLE IS 
'Логируемая таблица';

COMMENT ON COLUMN Z_LOG_TABLE.L_OPER IS 
'операция 1-инсерт, 2-апдейт, 3-делит';



/******************************************************************************/
/***                               Privileges                               ***/
/******************************************************************************/


/* Privileges of users */
GRANT SELECT ON Z_LOG_TABLE TO PRICECREATOR;
GRANT ALL ON Z_LOG_TABLE TO REPLICATOR;



hvladТы 100% уверен, что сбойный оператор - именно инсерт ?ДА.
...
Рейтинг: 0 / 0
Проблема Lock conflict on nowait transaction при Insert
    #38961384
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladПолное сообщение об ошибке можно увидеть ?

там разные триггеры в присланном скриншоте ссылка на этот оператор (эта часть одинаковая у всех засветившихся триггеров)

/* ВСТАВКА В Z_LOG_TABLE */
insert into Z_LOG_TABLE (Z_ID, LOG_ID, L_TABLE, L_OPER, SQLTEXT)
values(:Z_ID, :LOG_ID, 'DOG_P', 1, :SQLTEXT);
...
Рейтинг: 0 / 0
Проблема Lock conflict on nowait transaction при Insert
    #38961386
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevskyсудя по top память/процы нагружены, но чрезмерно, в своп не лезет.багфикс не чрезмерно, из доступных 48 гиг занято 40-41, процы 2 шт по 4 ядра на брата.
...
Рейтинг: 0 / 0
Проблема Lock conflict on nowait transaction при Insert
    #38961429
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladВоспроизводить пробовали ? Не удалось ? Больше не возникало ?
Я уже даже не помню у кого именно оно возникало. Поскольку ответа не было найдено, а
проблема саморассасывается при последующих попытках, то всё так и заглохло.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Проблема Lock conflict on nowait transaction при Insert
    #38961443
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovне помню у кого именно оно возникало. у мну . Но не только при массовых попытках аттача, еще и при других условиях было. Поищу в архиве переписок Э & K, может нарою что...
...
Рейтинг: 0 / 0
Проблема Lock conflict on nowait transaction при Insert
    #38961473
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovhvladВоспроизводить пробовали ? Не удалось ? Больше не возникало ?
Я уже даже не помню у кого именно оно возникало. Поскольку ответа не было найдено, а
проблема саморассасывается при последующих попытках, то всё так и заглохло.


была примерно такая фигня 4 года назад.

пересечение было на PK/FK.

сами данные транзакционны, а вот индексы - не совсем.

как победил уже не помню, система была временная.
...
Рейтинг: 0 / 0
Проблема Lock conflict on nowait transaction при Insert
    #38961493
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоиду мну.
Нет, оно возникало при работе репликатора, а не коннекте.

Перерыл сейчас все логи, ничего не нашёл, что странно, поскольку я храню все присланные
мне логи от начала времён.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Проблема Lock conflict on nowait transaction при Insert
    #38961563
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovНет, оно возникало при работе репликатора, а не коннекте.У мну это было задолго до репликатора, в конце 2010. На тесте, который пытался развалить индексы (тогда шли ожесточённые поиски причин missing entries). И ошибка лезла именно на insert'ах. Её очень трудно было получить, она проявлялась 1 или 2 раза всего.
...
Рейтинг: 0 / 0
Проблема Lock conflict on nowait transaction при Insert
    #38961600
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_Pisarevsky,

ещё одна версия - индекс на таблице с логом (или FK на неё) не перестраивали в это время ?
...
Рейтинг: 0 / 0
Проблема Lock conflict on nowait transaction при Insert
    #38961631
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladещё одна версия - индекс на таблице с логом (или FK на неё) не перестраивали в это время ?Метаданные не менялись точно, индексы не перестраивались.

Насколько может тупить Gen_id ? Есть несколько операций где дергаются генераторы, в некоторых хранимках по десятку тысяч. сейчас хочу отрефакторить пару-тройку хранимок, чтоб вместо тысячи обращений к gen_id(g, 1), дернуть оную один раз gen_id(g, 1000) и далее выбирать пока не кончится.
Как раз в момент инцидента работало нечто подобное, обращений к генераторам было довольно много. Но тут надо, наверно, нагрузочное тестирование провести, сколько мой сервер способен потянуть.
...
Рейтинг: 0 / 0
Проблема Lock conflict on nowait transaction при Insert
    #38961746
Возможно нужно к сообщению об ошибке прикреплять стэйтмент который её вызвал. Вдруг там не инсерт совсем. Или наоборот - там на самом деле инсерт.
...
Рейтинг: 0 / 0
Проблема Lock conflict on nowait transaction при Insert
    #38961786
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyНасколько может тупить Gen_id ?Мне проще спросить, что ты имеешь в виду, чем писать все возможные варианты ответов...
...
Рейтинг: 0 / 0
Проблема Lock conflict on nowait transaction при Insert
    #38961879
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladчто ты имеешь в виду, чем писать все возможные варианты ответов...БОльшая часть инсертов, прежде чем сработать дергает генератор. Не мог "мордобой" за страничку с генераторами дать такой эффект? Особенно, когда некто приходит (более одного человека) и начинает за одно исполнение хранимки дергать 10-20 тыс раз генератор? В фоне при этом я насчитал 94 коннекта, у нескольких операторов, которых я обошел лично, ошибки были на триггерах, которые в свою очередь вызывают инсерты, а перед инсертом дергается генератор.
...
Рейтинг: 0 / 0
Проблема Lock conflict on nowait transaction при Insert
    #38961895
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyНе мог "мордобой" за страничку с генераторами дать такой эффект?Явно - нет. Что там на самом деле произошло - я не знаю.

Ivan_PisarevskyВ фоне при этом я насчитал 94 коннекта, у нескольких операторов, которых я обошел лично, ошибки были на триггерах, которые в свою очередь вызывают инсерты, а перед инсертом дергается генератор.Так ведь ошибку 100500%% дал инсерт ?!
Где полный её текст ?
Как я могу быть уверен хоть в чём-то ?

PS На данный момент, если верить указанным симптомам, я могу предполагать ровно 1 способ получения массовых isc_lock_conflict при инсертах -
один из аттачей зарезервировал таблицу в несовместимом режиме.
Это может быть при:
а) построении\перестроении индекса этой таблицы или ФК на эту таблицу
б) явном резервировании таблицы тр-цией с любым уровнем изоляции
в) не явном резервировании таблицы тр-цей SNAPSHOT TABLE STABILITY

PPS Это не значит, что там не произошло что-то экстраординарное и ранее неизвестное.
...
Рейтинг: 0 / 0
Проблема Lock conflict on nowait transaction при Insert
    #38961924
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladГде полный её текст ?
располагаю только скриншотом
...
Рейтинг: 0 / 0
Проблема Lock conflict on nowait transaction при Insert
    #38961930
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
278 строка это последний end. В триггере дерганье генератора, возня с локальными переменными и инсерт в таблицу ДДЛ которой выше.

hvladКак я могу быть уверен хоть в чём-то ?Я понимаю, что рассказ сбивчивый, действовал в час пик в цейтноте. Поэтому, учитывая что я даю явно недостаточную инфу для решенния проблемы, меня устроит и ответ на вопрос номер2:
Ivan_Pisarevsky2. Что делать когда "оно" наступило?чтобы в следующий раз я не вышлядел "партизанином на допросе".
...
Рейтинг: 0 / 0
Проблема Lock conflict on nowait transaction при Insert
    #38961932
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladЭто может быть при:точно не "а", остальное перепроверю еще раз.
...
Рейтинг: 0 / 0
Проблема Lock conflict on nowait transaction при Insert
    #38961952
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ivan_PisarevskyЯ понимаю, что рассказ сбивчивый, действовал в час пик в цейтноте. Поэтому, учитывая что я даю явно недостаточную инфу для решенния проблемы, меня устроит и ответ на вопрос номер2:
Ivan_Pisarevsky2. Что делать когда "оно" наступило?Т.к. точного ответа на вопрос 1 нет, то остаются общие меры:
а) fb_lock_print -c -a
b) состояние всех таблиц мониторинга (кроме статистики)

Если эффект длится дольше, чем 10-15 сек, то было бы хорошо повторить сбор инф-ции 2-3 раза с интервалом 10-15 сек. Если это возможно, есс-но
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Проблема Lock conflict on nowait transaction при Insert
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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