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

Откуда: Челябинск
Сообщений: 110
Добрый день.
2 недели назад появилась проблема: дефрагментация (реорганизация) стала "зависать", т.е. вместо 2,5-3,0 часов ночью - выполняется 12 и более часов - пока не прерву руками.
Прерываю по причине того, что в 1С появляется ошибка конфликт блокировок при попытке открытия любого документа Требование-накладная. Стоит остановить "зависшее" рег.задание скуля - проблема уходит.

При этом реиндексация (перестроение) выполняется нормально за те же 3часа (раз в неделю).

Что это и как лечить?
30 дек 16, 08:53    [20062802]     Ответить | Цитировать Сообщить модератору
 Re: Неоправданно долгое выполнение дефрагментации индекса sql  [new]
o-o
Guest
Реорг как раз блокирует всего лишь те страницы, которые перемещает, что гораздо меньше, чем при ребилде(весь индекс недоступен).
Это как-то не вяжется с невозможностью отрытия *любого* документа.
Смотрите блокировки
30 дек 16, 09:45    [20062964]     Ответить | Цитировать Сообщить модератору
 Re: Неоправданно долгое выполнение дефрагментации индекса sql  [new]
chel74
Member

Откуда: Челябинск
Сообщений: 110
o-o, что именно смотреть?
30 дек 16, 12:03    [20063549]     Ответить | Цитировать Сообщить модератору
 Re: Неоправданно долгое выполнение дефрагментации индекса sql  [new]
o-o
Guest
ну так блокировки же. на этих ваших документах
30 дек 16, 12:51    [20063747]     Ответить | Цитировать Сообщить модератору
 Re: Неоправданно долгое выполнение дефрагментации индекса sql  [new]
chel74
Member

Откуда: Челябинск
Сообщений: 110
научите (ссылку хотя бы)
30 дек 16, 13:22    [20063881]     Ответить | Цитировать Сообщить модератору
 Re: Неоправданно долгое выполнение дефрагментации индекса sql  [new]
execute
Guest
chel74,

from Glenn Berry

-- Detect blocking (run multiple times)  (Query 53) (Detect Blocking)
SELECT t1.resource_type AS [lock type], DB_NAME(resource_database_id) AS [database],
t1.resource_associated_entity_id AS [blk object],t1.request_mode AS [lock req],  --- lock requested
t1.request_session_id AS [waiter sid], t2.wait_duration_ms AS [wait time],       -- spid of waiter  
(SELECT [text] FROM sys.dm_exec_requests AS r WITH (NOLOCK)                      -- get sql for waiter
CROSS APPLY sys.dm_exec_sql_text(r.[sql_handle]) 
WHERE r.session_id = t1.request_session_id) AS [waiter_batch],
(SELECT SUBSTRING(qt.[text],r.statement_start_offset/2, 
    (CASE WHEN r.statement_end_offset = -1 
    THEN LEN(CONVERT(nvarchar(max), qt.[text])) * 2 
    ELSE r.statement_end_offset END - r.statement_start_offset)/2) 
FROM sys.dm_exec_requests AS r WITH (NOLOCK)
CROSS APPLY sys.dm_exec_sql_text(r.[sql_handle]) AS qt
WHERE r.session_id = t1.request_session_id) AS [waiter_stmt],					-- statement blocked
t2.blocking_session_id AS [blocker sid],										-- spid of blocker
(SELECT [text] FROM sys.sysprocesses AS p										-- get sql for blocker
CROSS APPLY sys.dm_exec_sql_text(p.[sql_handle]) 
WHERE p.spid = t2.blocking_session_id) AS [blocker_stmt]
FROM sys.dm_tran_locks AS t1 WITH (NOLOCK)
INNER JOIN sys.dm_os_waiting_tasks AS t2 WITH (NOLOCK)
ON t1.lock_owner_address = t2.resource_address OPTION (RECOMPILE);

-- Helps troubleshoot blocking and deadlocking issues
-- The results will change from second to second on a busy system
-- You should run this query multiple times when you see signs of blocking
30 дек 16, 13:29    [20063912]     Ответить | Цитировать Сообщить модератору
 Re: Неоправданно долгое выполнение дефрагментации индекса sql  [new]
Makar4ik
Member

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2680
chel74,

DBCC DBREINDEX - как раз залочит всё на свете, и не даст остальным работать.
Но эта же команда, по идее, должна отработать за минимальное время.
5 янв 17, 04:59    [20074331]     Ответить | Цитировать Сообщить модератору
 Re: Неоправданно долгое выполнение дефрагментации индекса sql  [new]
o-o
Guest
Makar4ik
chel74,

DBCC DBREINDEX - как раз залочит всё на свете, и не даст остальным работать.
Но эта же команда, по идее, должна отработать за минимальное время.

Упорный любитель старины в каждую тему лезет с dbcc dbreindex.
Правда ТС делает дефраг, но ведь кому это интересно?
5 янв 17, 08:38    [20074378]     Ответить | Цитировать Сообщить модератору
 Re: Неоправданно долгое выполнение дефрагментации индекса sql  [new]
Visibus
Member

Откуда:
Сообщений: 32
chel74
Добрый день.
2 недели назад появилась проблема: дефрагментация (реорганизация) стала "зависать", т.е. вместо 2,5-3,0 часов ночью - выполняется 12 и более часов - пока не прерву руками.
Прерываю по причине того, что в 1С появляется ошибка конфликт блокировок при попытке открытия любого документа Требование-накладная. Стоит остановить "зависшее" рег.задание скуля - проблема уходит.

При этом реиндексация (перестроение) выполняется нормально за те же 3часа (раз в неделю).

Что это и как лечить?


На какой-то конкретной таблице зависает?
У меня было как-то почти также. Реиндекс отрабатывает, а вот дефрагментация по 2-3 суток выполнялась.
Оказалось, что в определенной таблице было много изменений (вставка/удаление).

Как лечить - если SQL версии enterprise, то реиндекс онлайн, иначе - никак.
9 янв 17, 15:03    [20084936]     Ответить | Цитировать Сообщить модератору
 Re: Неоправданно долгое выполнение дефрагментации индекса sql  [new]
Александр Бердышев
Member

Откуда: Санкт-Петербург
Сообщений: 391
Если вам так критично - можете попробовать сделать партиционирование индекса и тогда блокироваться будет только часть.
Больше вероятность, что всё выполнится.
9 янв 17, 17:47    [20085718]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить