Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5 6   вперед  Ctrl      все
 Re: Долгое выполнение хранимых процедур  [new]
gepard1980
Member

Откуда: Ярославль
Сообщений: 211
Mind,

К сообщению приложен файл. Размер - 80Kb
29 ноя 18, 08:56    [21748041]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
PizzaPizza
Member

Откуда:
Сообщений: 146
gepard1980
Mind, есть job который сначала проверку на целостность делает, а потом ребилд индексов.

посмотрел сейчас лог - он всегда останавливался на ошибке при DBCC CHECKDB на базе WebLeader и дальше соответственно не шел. надо будет ночью сегодня запустить джоб на ребилд индексов. а ошибка такая:


У вас job на rebuild выпадает с ошибкой при проверке целостности?
А что вам даст на ночь запуск этого jobа? Может сначала с чекдб разобраться?
29 ноя 18, 08:59    [21748045]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
gepard1980
Member

Откуда: Ярославль
Сообщений: 211
PizzaPizza, посмотрел этот plan, там вообще нету check dbcc:

К сообщению приложен файл. Размер - 12Kb
29 ноя 18, 09:05    [21748048]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
PizzaPizza
Member

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

Мне кажется, что если у вас есть постоянные ошибки целостности то с ними надо разбираться в первую очередь.
Я лично не понял про что вы говорили тут
gepard1980
он всегда останавливался на ошибке при DBCC CHECKDB на базе WebLeader и дальше соответственно не шел

Кто "он"? Job с ребилдом? Если у вас в этом джобе нет чека, то как запускается этот чек, который приводит к ошибке?
29 ноя 18, 10:07    [21748111]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
gepard1980
Member

Откуда: Ярославль
Сообщений: 211
PizzaPizza, тот job я уже удалил, поэтому может что и попутал. Сделал новый, который только Check Integrity делает. Если он не справится, то придется наверно базу новую скриптом создать и перелить все таблицы из старой.
29 ноя 18, 10:34    [21748148]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2116
gepard1980
Mind, по третьему скрипту относительно базы lion_data результаты такие. На что обратить внимание?
А вот фиг его знает. Я думал у вас простой случай.
Все что я пока вижу, это две больших таблицы на 100% загружены в память и в них огромное пустое место, которое лучше конечно убрать путем реиндекса. А вот дальше непонятно, ибо по самой большой таблице было всего 4 скана, так что непонятно что ее заставляет сидеть в памяти, есть еще конечно один missing index, но вряд ли он решит что либо. Да и сканов по другим таблицам вообще почти нет. Либо там все настолько оптимизиронно либо кто то захинтовал все запросы forceseek-ами.
Вероятно это тупиковый путь и нужно смотреть что то другое. Например диски.

Кстати та процедура что вы привели в пером посте, если ее скопировать в ssms и запустить она будет так же долго выполняться?
29 ноя 18, 11:25    [21748246]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
gepard1980
Member

Откуда: Ярославль
Сообщений: 211
Mind, хинтов в хранимках нет. В SSMS выполнил следующую процедуру:

USE WebLeader

DECLARE @OrganizationUID UNIQUEIDENTIFIER
SET @OrganizationUID = '1D7E654A-373C-4F25-909E-81645EB29294'

SELECT uid_obj, uid_user, name FROM lt_Organizations WHERE @OrganizationUID = uid_obj

Первый раз выполнялась 5 секунд. Последующие разы около секунды.
29 ноя 18, 11:45    [21748302]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 5671
gepard1980,

OPTION (OPTIMIZE FOR UNKNOWN) или OPTION (RECOMPILE)
29 ноя 18, 11:47    [21748308]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
gepard1980
Member

Откуда: Ярославль
Сообщений: 211
TaPaK, с этим хинтом всегда одна секунда.
29 ноя 18, 11:56    [21748337]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
DaniilSeryi
Member

Откуда:
Сообщений: 1280
gepard1980
TaPaK, с этим хинтом всегда одна секунда.

Как понимаю, ТСу после добавления в процедуру хинта OPTION (OPTIMIZE FOR UNKNOWN) или OPTION (RECOMPILE) осталось только соответствующий покрывающий индекс создать?
Ну и разобраться с постоянными ошибками целостности, обновить статистики with fullscan и перестроить индексы?
29 ноя 18, 12:47    [21748431]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 5977
Я не удивлен, что при такой нагрузке на диски они дают сбои. Чудо, что вообще до сих пор живы.
29 ноя 18, 13:26    [21748489]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 1995
а разве после перестройки индексов нужно делать обновление статистики?
29 ноя 18, 13:37    [21748517]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
DaniilSeryi
Member

Откуда:
Сообщений: 1280
StarikNavy
а разве после перестройки индексов нужно делать обновление статистики?


Статистика создаётся не только при создании индексов, так что, думаю, что да.
29 ноя 18, 14:09    [21748580]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
gepard1980
Member

Откуда: Ярославль
Сообщений: 211
Владислав Колосов, это Azure :-)
29 ноя 18, 14:59    [21748682]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 1995
DaniilSeryi
Статистика создаётся не только

это да. но после ребилда не нужно. хотя может я и не прав, и у ТС этот момент учтен )
29 ноя 18, 15:23    [21748725]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
gepard1980
Member

Откуда: Ярославль
Сообщений: 211
Похоже что узкое место - диск. Придется SSD использовать.
29 ноя 18, 16:02    [21748800]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2116
TaPaK
gepard1980,

OPTION (OPTIMIZE FOR UNKNOWN) или OPTION (RECOMPILE)
Как же бесят такие советчики.
Вы понимаете что OPTIMIZE FOR UNKNOWN и RECOMPILE делают прямо противоположное? А что, давайте без всякого анализа и плана попробуем все хинты которые только можно, авось какой нибудь подойдет. Я уж не говорю про то, что ТС запускает даже не процедуру а запрос, где сниффинга нет по определению и добавление OPTIMIZE FOR UNKNOWN вообще безсмыссленно.
29 ноя 18, 21:38    [21749133]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
DaniilSeryi
Member

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

ТС как раз процедуру запускает, из которой и скопирован код: SELECT uid_org, uid_user, name FROM lt_Organizations WHERE @OrganizationUID = uid_obj
29 ноя 18, 21:48    [21749144]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2116
gepard1980
TaPaK, с этим хинтом всегда одна секунда.
Не слушайте тапки. Почти наверняка эти хинты не дали абсолютно ничего.
Во время первого запуска данных не было в кэше, серверу пришлось читать с диска, который как мы знаем у вас очень медленный или чем то загружен. При последующих запусках данные были уже в памяти поэтому выполнение "быстрое". Для простой выборки по ключу даже 1 секунда это очень-очень медленно, поэтому у вас там скорее всего скан. Так что запускайте еще раз с включенным актуальным планом и выкладывайте его сюда, желательно в виде виде файла, а не картинки ("Save Execution Plas as").
Еще перед запуском можете включить:
set statistics io on
set statistics time on

Индекс по полю uid_obj у вас есть?

И еще, то что вы выполняете это не процедура, а вырванный из процедеры запрос, разница может быть весьма значительной из-за parameter sniffing, хотя я сомневаюсь что у вас проблема именно в этом.
29 ноя 18, 21:49    [21749145]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2116
DaniilSeryi
Mind,

ТС как раз процедуру запускает, из которой и скопирован код: SELECT uid_org, uid_user, name FROM lt_Organizations WHERE @OrganizationUID = uid_obj
Что именно ТС называет "выполнил следующую процедуру" мы можем только догадываться. Википедия дает следующее определение: "Процедура — взаимосвязанная последовательность действий где-либо". Так что это может быть что угодно. Я сейчас окно открою и плюну на улицу, это тоже будет называться процедура.

Вот это называется запрос (query/batch/statement):
USE WebLeader

DECLARE @OrganizationUID UNIQUEIDENTIFIER
SET @OrganizationUID = '1D7E654A-373C-4F25-909E-81645EB29294'

SELECT uid_obj, uid_user, name FROM lt_Organizations WHERE @OrganizationUID = uid_obj

А вот это вызов stored procedure:
EXEC lt_GetOrganizationByUID @OrganizationUID = '1D7E654A-373C-4F25-909E-81645EB29294'
29 ноя 18, 21:59    [21749154]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
gepard1980
Member

Откуда: Ярославль
Сообщений: 211
Mind, "Так что запускайте еще раз с включенным актуальным планом и выкладывайте его сюда, желательно в виде виде файла, а не картинки ("Save Execution Plas as")". Можно поподробней где этот актуальный план включать, как потом файл получить. Выполнять буду как хранимую процедуру через EXEC.
29 ноя 18, 22:07    [21749165]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2116
gepard1980,

Опять же только предположение, возможно lion_data съедает всю память, а потом WebLeader будучи плохо оптимизированной базой страдает пытаясь сканировать таблицы с диска. Из 75Гб только 1.3Гб в памяти. Я так понимаю у вас все медленные зпросы как раз таки к WebLeader?

Попробуйте еще раз запустить вот этот запрос, но уже для базы WebLeader:
+ Index Usage Statistics
/* Generated in SQL Explorer v.1.6.4.31586 */
SET NOCOUNT ON
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
SET LOCK_TIMEOUT 10000

SELECT 
  OBJECT_SCHEMA_NAME(i.[object_id]) + '.' + OBJECT_NAME(i.[object_id]) AS TableName,
  ISNULL(REPLACE(i.name, NCHAR(31), ''), '<<<HEAP>>>') AS IndexName,
  i.is_primary_key AS PK,
  i.is_unique_constraint AS UQ,
  CAST(CASE WHEN i.index_id = 1 THEN 1 ELSE 0 END AS BIT) AS Clust,
  CAST(p2.SizeMB AS DECIMAL(20, 2)) AS SizeMB,
  s.user_seeks,
  s.user_scans,
  s.user_lookups,
  s.user_seeks + s.user_scans + s.user_lookups AS total_user_reads,
  CAST(s.user_scans*SizeMB/1024. AS DECIMAL(30, 2)) AS TotalScanGB,
  CASE WHEN i.index_id IN (0,1) THEN mi.MissingIndexes ELSE NULL END AS MissingIndexes
FROM sys.indexes AS i
LEFT JOIN
    (
      select p2.object_id, p2.index_id, SUM(au.used_pages) / 128.AS SizeMB
      from sys.partitions AS p2
        INNER JOIN sys.allocation_units AS au ON p2.partition_id = au.container_id
      where au.type <> 2-- LOB_DATA
      group by p2.object_id, p2.index_id
    ) p2 ON p2.object_id = i.object_id AND p2.index_id = i.index_id
LEFT JOIN 
  (
    SELECT mid.object_id, MissingIndexes = COUNT(*)
    FROM sys.dm_db_missing_index_group_stats AS migs
      INNER JOIN sys.dm_db_missing_index_groups AS mig ON migs.group_handle = mig.index_group_handle
      INNER JOIN sys.dm_db_missing_index_details AS mid ON mig.index_handle = mid.index_handle
    WHERE mid.database_id = DB_ID()
    GROUP BY mid.object_id
  ) mi ON mi.object_id = i.object_id
LEFT JOIN sys.dm_db_index_usage_stats AS s
  ON s.[object_id] = i.[object_id] AND s.index_id = i.index_id
  AND s.database_id = DB_ID()
WHERE ((OBJECTPROPERTY(i.[object_id],'IsUserTable') = 1) OR (OBJECTPROPERTY(i.[object_id],'IsView') = 1))
ORDER BY TotalScanGB DESC
OPTION(MAXDOP 1)
29 ноя 18, 22:12    [21749167]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2116
gepard1980,

К сообщению приложен файл. Размер - 6Kb
29 ноя 18, 22:14    [21749168]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
gepard1980
Member

Откуда: Ярославль
Сообщений: 211
Mind, индекс конечно есть по полю uid_obj кластерный.
29 ноя 18, 22:14    [21749169]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
gepard1980
Member

Откуда: Ярославль
Сообщений: 211
Mind, спасибо - завтра с утра буду пробовать. Сейчас запустил ребилд индексов всей базы lion_data.
29 ноя 18, 22:17    [21749173]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 3 [4] 5 6   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить