powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вопрос про Xlock
7 сообщений из 7, страница 1 из 1
Вопрос про Xlock
    #39928491
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL 2012
Имеем 1 юзер лочит других ( в том числе системных к-е использутся для репликации ) на одном филиале последние 3 дня
на других 12 все ОК.
полс. время очень часто

через sp_WhoIsActive я вижу что виснет эта сессия на ф-ции GetCurrentDocExtDiscountClient_Partner

эта ф-ция вызывается в запросе

FROM Goods_Pos gp WITH(XLOCK)
...
LEFT JOIN DocExtDiscountClientDetail dedcd
ON dedcd.Id_DocExtDiscountClientTitle = [dbo]. GetCurrentDocExtDiscountClient_Partner (b2.Id_Partner, @Date_ttn, 3, @id_cm_client, @id_TypeOutlet, gp.id_goods) AND dedcd.Id_Goods = gp.id_goods


в ф-ции GetCurrentDocExtDiscountClient_Partner везде стоят WITH(NOLOCK)


в другой (более поздней) сессии (репликация) идет вставка в таблицу к-я есть в этой ф-ции
insert into DocExtDiscountClientDetail
и сессия лочится 1-й ( вижу через sp_WhoIsActive )
(предполагаю что проблема может быть именно в этом)

Также лочится куча других сессий и все это висит пока не делаешь kill.
Когда делаем kill сессии 1 юзера то все сразу ок.

1?) Может ли Xlock применяться не только к таблице Goods_Pos а эскалироваться и на DocExtDiscountClientDetail
2?) Общая идея как отловить такой вот случай когда вылазит блокировки у одного юзера ( м.б потому что она чаще всего делает эту операцию )
...
Рейтинг: 0 / 0
Вопрос про Xlock
    #39928503
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гулин Федор

1?) Может ли Xlock применяться не только к таблице Goods_Pos а эскалироваться и на DocExtDiscountClientDetail

нет
Гулин Федор

2?) Общая идея как отловить такой вот случай когда вылазит блокировки у одного юзера ( м.б потому что она чаще всего делает эту операцию )

в sys.dm_os_waiting_tasks есть и блокирующая сессия, и описание заблокированного ресурса
...
Рейтинг: 0 / 0
Вопрос про Xlock
    #39928505
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yasha123
Гулин Федор

1?) Может ли Xlock применяться не только к таблице Goods_Pos а эскалироваться и на DocExtDiscountClientDetail

нет
Гулин Федор

2?) Общая идея как отловить такой вот случай когда вылазит блокировки у одного юзера ( м.б потому что она чаще всего делает эту операцию )

в sys.dm_os_waiting_tasks есть и блокирующая сессия, и описание заблокированного ресурса


да я вижу блокирующую сессию - это 1-я
ищу причину (а точнее воркарануд чтобы обойти это)
ибо повторяется уже 3 день

ps Upd о ОПЯТЬ оно вылезло
...
Рейтинг: 0 / 0
Вопрос про Xlock
    #39928507
Фотография Yasha123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну так какие именно локи и где?
...
Рейтинг: 0 / 0
Вопрос про Xlock
    #39928523
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гулин Федор,

это же скалярная функция, внутри мега запрос, небось. что Вы ожидаете от этого? Низкая производительность вот и результат.
...
Рейтинг: 0 / 0
Вопрос про Xlock
    #39928526
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосов
Гулин Федор,

это же скалярная функция, внутри мега запрос, небось. что Вы ожидаете от этого? Низкая производительность вот и результат.


на других то пашет и без пролем
там в резалтсете было 3 строки когда висело

с помощью (Yasha123
СПС ей
нашел

pagelock fileid=1 pageid=4449832 dbid=5 subresource=FULL id=lockd9b019800 mode=IX associatedObjectId= 72057600119734272

SELECT * FROM sys.dm_tran_locks where request_session_id = 113
and resource_associated_entity_id = 72057600119734272

resource_type resource_subtype resource_database_id resource_description resource_associated_entity_id resource_lock_partition request_mode
KEY 5 (34770efa668e) 72057600119734272 0 X
PAGE 5 1:4449832 72057600119734272 0 IX

А сессия висит от этого юзера и держит других


Нашел имя таблицы к-я блокируется -
( но в другой сессии она без проблем читается по read commited )
но пока не нашел воркараундв
...
Рейтинг: 0 / 0
Вопрос про Xlock
    #39928531
Гулин Федор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
SELECT T1.REQUEST_SESSION_ID AS [WAITER SPID], -- SPID OF WAITER
T2.BLOCKING_SESSION_ID [BLOCKER SPID],
DB_NAME(RESOURCE_DATABASE_ID) AS [DATABASE],
T1.RESOURCE_TYPE AS [RESOURCE TYPE],
CASE T1.RESOURCE_TYPE WHEN 'OBJECT' THEN OBJECT_NAME(T1.RESOURCE_ASSOCIATED_ENTITY_ID)
ELSE T1.RESOURCE_ASSOCIATED_ENTITY_ID END AS [BLOCKING OBJECT],
T1.REQUEST_MODE AS [LOCK REQ MODE],
T2.WAIT_DURATION_MS AS [WAIT TIME],
R.TEXT AS WAITER_BATCH,
SUBSTRING(R.TEXT,EXR.STATEMENT_START_OFFSET/2,
(CASE WHEN EXR.STATEMENT_END_OFFSET = -1
THEN LEN(CONVERT(NVARCHAR(MAX), R.TEXT)) * 2
ELSE EXR.STATEMENT_END_OFFSET END - EXR.STATEMENT_START_OFFSET)/2) AS WAITER_STMT,
P.TEXT AS BLOCKER_BATCH,
SUBSTRING(P.TEXT,BLK_EXR.STATEMENT_START_OFFSET/2,
(CASE WHEN BLK_EXR.STATEMENT_END_OFFSET = -1
THEN LEN(CONVERT(NVARCHAR(MAX), P.TEXT)) * 2
ELSE BLK_EXR.STATEMENT_END_OFFSET END - BLK_EXR.STATEMENT_START_OFFSET)/2) AS BLOCKER_STMT
FROM
SYS.DM_TRAN_LOCKS AS T1,
SYS.DM_OS_WAITING_TASKS AS T2,
SYS.DM_EXEC_REQUESTS EXR
CROSS APPLY SYS.DM_EXEC_SQL_TEXT(EXR.SQL_HANDLE) AS R,
SYS.SYSPROCESSES SP
CROSS APPLY SYS.DM_EXEC_SQL_TEXT(SP.SQL_HANDLE) AS P,
SYS.DM_EXEC_REQUESTS BLK_EXR
WHERE
T1.LOCK_OWNER_ADDRESS = T2.RESOURCE_ADDRESS
AND EXR.SESSION_ID = T1.REQUEST_SESSION_ID
AND SP.SPID = T2.BLOCKING_SESSION_ID
AND BLK_EXR.SESSION_ID = T2.BLOCKING_SESSION_ID



WAITER SPID BLOCKER SPID DATABASE RESOURCE TYPE BLOCKING OBJECT LOCK REQ MODE WAIT TIME
92 113 MD_TT_UNILEVER PAGE 72057600119734272 S 2539403
147 113 MD_TT_UNILEVER PAGE 72057607254638592 S 2101423
156 113 MD_TT_UNILEVER OBJECT NULL IX 652225
67 113 MD_TT_UNILEVER KEY 72057598722703360 S 465773
144 113 MD_TT_UNILEVER KEY 72057598504599552 S 214322
114 113 MD_TT_UNILEVER PAGE 72057606214778880 S 789565
106 113 MD_TT_UNILEVER PAGE 72057599291490304 S 2490865
127 113 MD_TT_UNILEVER KEY 72057603815178240 X 936360
131 113 MD_TT_UNILEVER PAGE 72057598504665088 S 2491552
107 113 MD_TT_UNILEVER PAGE 72057598504861696 S 71063
143 113 MD_TT_UNILEVER PAGE 72057602239627264 U 2479729


собвственно я и так знаю что 113 держит всех и уже 2 раз за день
а вот причины не ясны
остальные сессии - в осн. репликации


PS Upd : я вот вспомнию тему с (Nolock) -
а они в функции этой везде стоят WITH(NOLOCK)
которая показывается в Blocker_Stmt
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вопрос про Xlock
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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