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

Сегодня получил интересную проблему, под нагрузкой (коннектов около 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
18.05.2015, 12:03
    #38961365
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема Lock conflict on nowait transaction при Insert
Вторым будешь: http://www.sql.ru/forum/1115385/lock-conflict-mezhdu-insert-i-delete?hl=
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
18.05.2015, 12:05
    #38961373
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема Lock conflict on nowait transaction при Insert
Ivan_Pisarevsky,

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

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

В логе ФБ чисто (штатные записи о сработавшем ночером свипе и немного 104, далеко от времени затыка)
...
Рейтинг: 0 / 0
18.05.2015, 12:07
    #38961376
hvlad
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема Lock conflict on nowait transaction при Insert
Dimitry SibiryakovВторым будешь: http://www.sql.ru/forum/1115385/lock-conflict-mezhdu-insert-i-delete?hl= Воспроизводить пробовали ? Не удалось ? Больше не возникало ?
...
Рейтинг: 0 / 0
18.05.2015, 12:09
    #38961379
Ivan_Pisarevsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема Lock conflict on nowait transaction при Insert
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
18.05.2015, 12:12
    #38961384
Ivan_Pisarevsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема Lock conflict on nowait transaction при Insert
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
18.05.2015, 12:15
    #38961386
Ivan_Pisarevsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема Lock conflict on nowait transaction при Insert
Ivan_Pisarevskyсудя по top память/процы нагружены, но чрезмерно, в своп не лезет.багфикс не чрезмерно, из доступных 48 гиг занято 40-41, процы 2 шт по 4 ядра на брата.
...
Рейтинг: 0 / 0
18.05.2015, 12:43
    #38961429
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема Lock conflict on nowait transaction при Insert
hvladВоспроизводить пробовали ? Не удалось ? Больше не возникало ?
Я уже даже не помню у кого именно оно возникало. Поскольку ответа не было найдено, а
проблема саморассасывается при последующих попытках, то всё так и заглохло.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
18.05.2015, 12:49
    #38961443
Таблоид
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема Lock conflict on nowait transaction при Insert
Dimitry Sibiryakovне помню у кого именно оно возникало. у мну . Но не только при массовых попытках аттача, еще и при других условиях было. Поищу в архиве переписок Э & K, может нарою что...
...
Рейтинг: 0 / 0
18.05.2015, 13:02
    #38961473
pastor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема Lock conflict on nowait transaction при Insert
Dimitry SibiryakovhvladВоспроизводить пробовали ? Не удалось ? Больше не возникало ?
Я уже даже не помню у кого именно оно возникало. Поскольку ответа не было найдено, а
проблема саморассасывается при последующих попытках, то всё так и заглохло.


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

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

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

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

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

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

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

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

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

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

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

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


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