Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Подскажите по блокировке..  [new]
MAULER
Member

Откуда:
Сообщений: 891
Здравствуйте.
Сегодня словили блокировку со spid = 27. LockType: TAB, LockMode: X

login_time этого процесса: 2018-08-19 совпадает с последним включением сервера
Смотрел так:
select min(login_time) from sys.dm_exec_sessions


Я правильно понимаю, что это системный процесс, попытался что-то сделать с моей таблицей и вызвал монопольную блокировку. Причем так, что это все заметили.

Если я правильно рассуждаю, то что мог начать пытаться делать этот системный процесс с таблицей?
Мог он к примеру делать обновление статистики таблицы,в момент когда в ней удалялись/обновлялись данные и вызвать блокировку?
12 ноя 18, 20:01    [21732312]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по блокировке..  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1364
MAULER,

у вас версия сервера какая?

при обновлении статистики процесс обычно получает X на объект но с подтипом UPDSTATS и непосредственно на метаданные.

вам бы надо было посмотреть на тот момент в sys.dm_tran_locks и sys.dm_os_waiting_tasks на предмет какие ресурсы помимо таблицы залочила сессия и каких ресурсов ждали другие сессии.

репликации случаем нет?
12 ноя 18, 20:56    [21732342]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по блокировке..  [new]
MAULER
Member

Откуда:
Сообщений: 891
felix_ff
MAULER,

у вас версия сервера какая?

при обновлении статистики процесс обычно получает X на объект но с подтипом UPDSTATS и непосредственно на метаданные.

вам бы надо было посмотреть на тот момент в sys.dm_tran_locks и sys.dm_os_waiting_tasks на предмет какие ресурсы помимо таблицы залочила сессия и каких ресурсов ждали другие сессии.

репликации случаем нет?


Спасибо Вам за подсказки по таблицам!
Нет, репликации нет. Но ещё обратил внимание, что на базе (зачем то) включено автосжатие (в свойствах базы AutoShrink = True)
Могло это быть причиной? или SQL сервер интеллектуально подходит к таким вещам, и во время работы других пользователей с таблицей, не трогает её по своим (системным) нуждам?
13 ноя 18, 07:27    [21732520]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по блокировке..  [new]
MAULER
Member

Откуда:
Сообщений: 891
Версия сервера:
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (X64) Apr 2 2010 15:48:46 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
13 ноя 18, 07:30    [21732521]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по блокировке..  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1364
MAULER,

автосжатие - по мнению Рэндала одна из наиболее невостребованных функций sql которые стоило бы удалить из него.

ознакомьтесь:https://www.sqlskills.com/blogs/paul/auto-shrink-turn-it-off/

и жить на RTM 2008 сиквела в 2018 :-) - у вас там точно не клуб БДСМ?
13 ноя 18, 10:17    [21732653]     Ответить | Цитировать Сообщить модератору
 Re: Подскажите по блокировке..  [new]
DaniilSeryi
Member

Откуда:
Сообщений: 1723
MAULER,

Если интересно, то:

sp_who --информация о процессах
sp_who2 --информация о процессах, включая - какими другими процессами процесс блокирован (столбец BlkBy)
sp_who2 27 --информация о конкретном процессе, включая - какими другими процессами процесс блокирован (столбец BlkBy)
--время исчисляется в миллисекундах, место на диске в байтах

declare @table_variable table (spid int,[Status] nvarchar(40),[login] nvarchar(60), hostname nvarchar(40),[BlokedBy] nvarchar(20), DBName nvarchar(40), Command nvarchar(40),CPUTime int, DiskIO int, LastBatch nvarchar(255), ProgramName nvarchar(255), SPID2 int, RequestID int) 
insert into @table_variable exec sp_who2
select spid, Status,login,hostname,BlokedBy,DBName,Command,CPUTime, CONVERT(int,CPUtime)/60000 as CPUTimeMin, DiskIO as DiskIOBytes,LastBatch,convert(int,SUBSTRING(LastBatch,1,2)) as Month,  convert(int,SUBSTRING(LastBatch,4,2)) as Day, ProgramName,SPID2, RequestID
from @table_variable
--where login<>'sa' 
order by convert(int,SUBSTRING(LastBatch,1,2)) Desc,  convert(int,SUBSTRING(LastBatch,4,2)) Desc, CPUTime desc



dbcc inputbuffer(27)-- просмотр кода запроса, выполняемого процессом

sp_lock	-- просмотр списка блокировок
select * from sys.dm_tran_locks -- просмотр списка блокировок
--типы блокировок
-- S   - разделяемая
-- X   - исключительная
-- IS  - разделяемая блокировка с намерением 
-- IX  - исключительная блокировка с намерением 
-- SIX - разделяемая блокировка с намерением исключительного доступа

DBCC opentran() --для конкретной базы данных - просмотр активных транзакций


--Кто использует базу tempdb
go
use tempdb
go
--список таблиц
select *
from sys.tables
order by create_date asc
--список сессий, не завершивших работу с tempdb
select s.*, internal_objects_alloc_page_count-internal_objects_dealloc_page_count as using_pages_tempdb,e.login_time,e.login_name
from sys.dm_db_session_space_usage as s
inner join sys.dm_exec_sessions as e
on s.session_id=e.session_id
where internal_objects_alloc_page_count-internal_objects_dealloc_page_count>0
--список активных транзакций
select transaction_id
from sys.dm_tran_active_snapshot_database_transactions
order by elapsed_time_seconds desc
15 ноя 18, 12:55    [21735101]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить