Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Мистическая задержка / 18 сообщений из 18, страница 1 из 1
17.01.2019, 14:20
    #39760876
Мистическая задержка
Всем привет!
Есть очень непонятная для меня проблема с обновление данных в таблице. Буду рад совету =)

Что бы было проще понять, я в примерах напишу не мои оригинальные названия таблиц и тригеров, а придуманные.

Есть запрос
Код: sql
1.
update table1 SEt column1='111111' where column_ID=8490



в таблице "table1" есть 3 тригера:

trigger1 - выполняется мгновенно
trigger2 - если "column5" не обновлялась, то Return.
trigger3 - если "column5" не обновлялась, то Return

Суть в том, что между тригерами trigger2 и trigger3 время от времени может происходить задержка в несколько секунд.
То есть, trigger1 закончил выполнение, trigger2 закончил выполнение, а trigger3 начал своё выполнение через 1-9 секунд после окончания выполнения trigger2.
Что может заставить тригер trigger3 ждать своё выполнение?

Код trigger2
Код: sql
1.
2.
if NOT UPDATE(column5) and NOT UPDATE(column6) return
print 'ON_trigger2' + convert(varchar(10),getdate(),108


....
...
...[/quote]

Код trigger3
Код: sql
1.
2.
if not UPDATE(column5)    OR (select count(*) from inserted) = 0   return
print 'ON_trigger3 ' + convert(varchar(10),getdate(),108)


...
...
...
...
...
Рейтинг: 0 / 0
17.01.2019, 14:38
    #39760893
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мистическая задержка
Прогер - странник,

Откройте Profiler и смотрите, что происходит.
...
Рейтинг: 0 / 0
17.01.2019, 15:40
    #39760973
Мистическая задержка
Владислав Колосов, Спасибо, глянул.



В общем он не показывает что делает. Вроде как что-то сканирует, но вот что? object_id у данных строчек пустой.
Самое странное - выше блокировка таблицы, которая 100% не используется.
В тригерах поставил везде Return (то есть тригеры вообще не должны что-то делать), тем не менее он что-то сканирует после обновления
...
Рейтинг: 0 / 0
17.01.2019, 15:43
    #39760975
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мистическая задержка
Прогер - странник,

а Event вам ни о чём не говорит?
...
Рейтинг: 0 / 0
17.01.2019, 15:45
    #39760979
Мистическая задержка
TaPaK, по столбцу EventClass я вижу, что он что-то сканирует. Но что? он ни где не пишет
...
Рейтинг: 0 / 0
17.01.2019, 15:50
    #39760988
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мистическая задержка
Прогер - странникTaPaK, по столбцу EventClass я вижу, что он что-то сканирует. Но что? он ни где не пишет
угу, что-то сканирует, а потом как Lock:Acquired :)
Ну и почему сканирует, это вы в свои индексы смотрите
...
Рейтинг: 0 / 0
17.01.2019, 16:01
    #39761005
Мистическая задержка
TaPaKугу, что-то сканирует, а потом как Lock:Acquired :)
В описании Lock:Acquired есть object_id, который соответствует левой таблице (не той, которую обновляю). получается, она блочит ту, которую обновляю?

авторНу и почему сканирует, это вы в свои индексы смотрите
то есть, эти пустые строчки - это сканирование индекса в таблице, которую я в настоящий момент обновляю?
...
Рейтинг: 0 / 0
18.01.2019, 09:26
    #39761253
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мистическая задержка
Прогер - странникTaPaKугу, что-то сканирует, а потом как Lock:Acquired :)
В описании Lock:Acquired есть object_id, который соответствует левой таблице (не той, которую обновляю). получается, она блочит ту, которую обновляю?

авторНу и почему сканирует, это вы в свои индексы смотрите
то есть, эти пустые строчки - это сканирование индекса в таблице, которую я в настоящий момент обновляю?
А декларативная ссылочная целостность у вас не задействована?
Да и вообще, FK на эту, блокируемую левую таблицу?

Кстати, если это так, постройте индекс по FK в дочерней таблице. Да и в родительской по ключу связи, если ключ в родительской таблице не это не primary key.
Потому как MSSQL считает, что ключи и связи - они, конечно, ключами и связями, а индексами нужно управлять отдельно.
И никаких индексов под FC самостоятельно не строит.
...
Рейтинг: 0 / 0
18.01.2019, 10:00
    #39761272
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мистическая задержка
uaggsterпостройте индекс по FK в дочерней таблице. Да и в родительской по ключу связи, если ключ в родительской таблице не это не primary key.

a вы пробовали создать FK, ссылаясь на родителя,
где на ключе нет уникального индекса?
...
Рейтинг: 0 / 0
18.01.2019, 17:10
    #39761646
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мистическая задержка
Yasha123uaggsterпостройте индекс по FK в дочерней таблице. Да и в родительской по ключу связи, если ключ в родительской таблице не это не primary key.

a вы пробовали создать FK, ссылаясь на родителя,
где на ключе нет уникального индекса?
Констрейнт же должен быть уникальный, а не индекс, вроде? :-)
...
Рейтинг: 0 / 0
18.01.2019, 17:15
    #39761650
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мистическая задержка
uaggsterКонстрейнт же должен быть уникальный, а не индекс, вроде? :-)
я фигею, дорогая редакция.
вы где-то видели констрэйнт уникальности
без уникального индекса, к-ый бы эту уникальность организовывал?
силой мысли что ли уникальность обеспечивается?
...
Рейтинг: 0 / 0
18.01.2019, 17:51
    #39761672
256k
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мистическая задержка
Yasha123uaggsterКонстрейнт же должен быть уникальный, а не индекс, вроде? :-)
я фигею, дорогая редакция.
вы где-то видели констрэйнт уникальности
без уникального индекса, к-ый бы эту уникальность организовывал?
силой мысли что ли уникальность обеспечивается?

ээххх, ну, вот, зачем сразу так....
...
Рейтинг: 0 / 0
21.01.2019, 09:09
    #39762220
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мистическая задержка
Yasha123uaggsterКонстрейнт же должен быть уникальный, а не индекс, вроде? :-)
я фигею, дорогая редакция.
вы где-то видели констрэйнт уникальности
без уникального индекса, к-ый бы эту уникальность организовывал?
силой мысли что ли уникальность обеспечивается?
Неа. Не силой мысли. А директивой ADD CONSTRAINT :-)
...
Рейтинг: 0 / 0
21.01.2019, 09:46
    #39762232
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мистическая задержка
uaggsterYasha123пропущено...

я фигею, дорогая редакция.
вы где-то видели констрэйнт уникальности
без уникального индекса, к-ый бы эту уникальность организовывал?
силой мысли что ли уникальность обеспечивается?
Неа. Не силой мысли. А директивой ADD CONSTRAINT :-)
которая индекс создаёт?
...
Рейтинг: 0 / 0
21.01.2019, 10:14
    #39762242
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мистическая задержка
uaggsterYasha123пропущено...

я фигею, дорогая редакция.
вы где-то видели констрэйнт уникальности
без уникального индекса, к-ый бы эту уникальность организовывал?
силой мысли что ли уникальность обеспечивается?
Неа. Не силой мысли. А директивой ADD CONSTRAINT :-)
откроем за ленивых собратьев хэлп по ALTER TABLE..ADD CONSTRAINT
...
Рейтинг: 0 / 0
23.01.2019, 23:42
    #39763866
flexgen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мистическая задержка
uaggsterпропущено...

Неа. Не силой мысли. А директивой ADD CONSTRAINT :-)

При создании UNIQUE CONSTRAINT создается UNIQUE INDEX - Create unique constraint

авторYou can create a unique constraint in SQL Server 2017 by using SQL Server Management Studio or Transact-SQL to ensure no duplicate values are entered in specific columns that do not participate in a primary key. Creating a unique constraint automatically creates a corresponding unique index.
...
Рейтинг: 0 / 0
25.01.2019, 11:18
    #39764816
Мистическая задержка
Всем больше спасибо за ответы. Они мне очень помогли =)

Причина тормозов была для меня слишком не очевидна.

В общем, в тригере "trigger3" было тяжёлое представление. Как только его оттуда убрал, так тормоза прекратились.
Не очевидно это было потому, что "trigger3" в 90% заканчивался первой строчкой "Return" и представление выполнялось очень редко, однако перед выполнением "trigger3" он ждал освобождение ресурсов представления и не обращал внимание, что это представление всё равно не выполняется.

то есть,мой запрос обновлял таблицу, выполнялся "trigger1", потом "trigger2" и ожидание освобождение ресурсов для "trigger3", даже несмотря на то, что он выполнит Return.

Не знаю, понятно ли объяснил))))

Тему можно закрывать
...
Рейтинг: 0 / 0
25.01.2019, 11:59
    #39764842
Yasha123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Мистическая задержка
Прогер - странникперед выполнением "trigger3" он ждал освобождение ресурсов представления и не обращал внимание, что это представление всё равно не выполняется.

позвольте все же поинтересоваться,
как можно "выполнять" представление (наверное, командой EXECUTE?)
и какие же это "ресурсы представления" надо освобождать,
да еще и при том, что "представление всё равно не выполняется"?
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Мистическая задержка / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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