powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Долгое выполнение хранимых процедур
25 сообщений из 131, страница 4 из 6
Долгое выполнение хранимых процедур
    #39740202
gepard1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mind,
...
Рейтинг: 0 / 0
Долгое выполнение хранимых процедур
    #39740204
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gepard1980Mind, есть job который сначала проверку на целостность делает, а потом ребилд индексов.

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

У вас job на rebuild выпадает с ошибкой при проверке целостности?
А что вам даст на ночь запуск этого jobа? Может сначала с чекдб разобраться?
...
Рейтинг: 0 / 0
Долгое выполнение хранимых процедур
    #39740206
gepard1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PizzaPizza, посмотрел этот plan, там вообще нету check dbcc:
...
Рейтинг: 0 / 0
Долгое выполнение хранимых процедур
    #39740229
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gepard1980,

Мне кажется, что если у вас есть постоянные ошибки целостности то с ними надо разбираться в первую очередь.
Я лично не понял про что вы говорили тут
gepard1980он всегда останавливался на ошибке при DBCC CHECKDB на базе WebLeader и дальше соответственно не шел
Кто "он"? Job с ребилдом? Если у вас в этом джобе нет чека, то как запускается этот чек, который приводит к ошибке?
...
Рейтинг: 0 / 0
Долгое выполнение хранимых процедур
    #39740238
gepard1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PizzaPizza, тот job я уже удалил, поэтому может что и попутал. Сделал новый, который только Check Integrity делает. Если он не справится, то придется наверно базу новую скриптом создать и перелить все таблицы из старой.
...
Рейтинг: 0 / 0
Долгое выполнение хранимых процедур
    #39740269
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gepard1980Mind, по третьему скрипту относительно базы lion_data результаты такие. На что обратить внимание?А вот фиг его знает. Я думал у вас простой случай.
Все что я пока вижу, это две больших таблицы на 100% загружены в память и в них огромное пустое место, которое лучше конечно убрать путем реиндекса. А вот дальше непонятно, ибо по самой большой таблице было всего 4 скана, так что непонятно что ее заставляет сидеть в памяти, есть еще конечно один missing index, но вряд ли он решит что либо. Да и сканов по другим таблицам вообще почти нет. Либо там все настолько оптимизиронно либо кто то захинтовал все запросы forceseek-ами.
Вероятно это тупиковый путь и нужно смотреть что то другое. Например диски.

Кстати та процедура что вы привели в пером посте, если ее скопировать в ssms и запустить она будет так же долго выполняться?
...
Рейтинг: 0 / 0
Долгое выполнение хранимых процедур
    #39740275
gepard1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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 секунд. Последующие разы около секунды.
...
Рейтинг: 0 / 0
Долгое выполнение хранимых процедур
    #39740278
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gepard1980,

OPTION (OPTIMIZE FOR UNKNOWN) или OPTION (RECOMPILE)
...
Рейтинг: 0 / 0
Долгое выполнение хранимых процедур
    #39740286
gepard1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaK, с этим хинтом всегда одна секунда.
...
Рейтинг: 0 / 0
Долгое выполнение хранимых процедур
    #39740315
DaniilSeryi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gepard1980TaPaK, с этим хинтом всегда одна секунда.
Как понимаю, ТСу после добавления в процедуру хинта OPTION (OPTIMIZE FOR UNKNOWN) или OPTION (RECOMPILE) осталось только соответствующий покрывающий индекс создать?
Ну и разобраться с постоянными ошибками целостности, обновить статистики with fullscan и перестроить индексы?
...
Рейтинг: 0 / 0
Долгое выполнение хранимых процедур
    #39740342
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не удивлен, что при такой нагрузке на диски они дают сбои. Чудо, что вообще до сих пор живы.
...
Рейтинг: 0 / 0
Долгое выполнение хранимых процедур
    #39740352
Фотография StarikNavy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а разве после перестройки индексов нужно делать обновление статистики?
...
Рейтинг: 0 / 0
Долгое выполнение хранимых процедур
    #39740368
DaniilSeryi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StarikNavyа разве после перестройки индексов нужно делать обновление статистики?

Статистика создаётся не только при создании индексов, так что, думаю, что да.
...
Рейтинг: 0 / 0
Долгое выполнение хранимых процедур
    #39740398
gepard1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав Колосов, это Azure :-)
...
Рейтинг: 0 / 0
Долгое выполнение хранимых процедур
    #39740409
Фотография StarikNavy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DaniilSeryiСтатистика создаётся не только
это да. но после ребилда не нужно. хотя может я и не прав, и у ТС этот момент учтен )
...
Рейтинг: 0 / 0
Долгое выполнение хранимых процедур
    #39740441
gepard1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Похоже что узкое место - диск. Придется SSD использовать.
...
Рейтинг: 0 / 0
Долгое выполнение хранимых процедур
    #39740576
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKgepard1980,

OPTION (OPTIMIZE FOR UNKNOWN) или OPTION (RECOMPILE)Как же бесят такие советчики.
Вы понимаете что OPTIMIZE FOR UNKNOWN и RECOMPILE делают прямо противоположное? А что, давайте без всякого анализа и плана попробуем все хинты которые только можно, авось какой нибудь подойдет. Я уж не говорю про то, что ТС запускает даже не процедуру а запрос, где сниффинга нет по определению и добавление OPTIMIZE FOR UNKNOWN вообще безсмыссленно.
...
Рейтинг: 0 / 0
Долгое выполнение хранимых процедур
    #39740579
DaniilSeryi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mind,

ТС как раз процедуру запускает, из которой и скопирован код: SELECT uid_org, uid_user, name FROM lt_Organizations WHERE @OrganizationUID = uid_obj
...
Рейтинг: 0 / 0
Долгое выполнение хранимых процедур
    #39740580
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gepard1980TaPaK, с этим хинтом всегда одна секунда.Не слушайте тапки. Почти наверняка эти хинты не дали абсолютно ничего.
Во время первого запуска данных не было в кэше, серверу пришлось читать с диска, который как мы знаем у вас очень медленный или чем то загружен. При последующих запусках данные были уже в памяти поэтому выполнение "быстрое". Для простой выборки по ключу даже 1 секунда это очень-очень медленно, поэтому у вас там скорее всего скан. Так что запускайте еще раз с включенным актуальным планом и выкладывайте его сюда, желательно в виде виде файла, а не картинки ("Save Execution Plas as").
Еще перед запуском можете включить:
Код: sql
1.
2.
set statistics io on
set statistics time on


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

И еще, то что вы выполняете это не процедура, а вырванный из процедеры запрос, разница может быть весьма значительной из-за parameter sniffing, хотя я сомневаюсь что у вас проблема именно в этом.
...
Рейтинг: 0 / 0
Долгое выполнение хранимых процедур
    #39740583
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DaniilSeryiMind,

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

Вот это называется запрос (query/batch/statement):
Код: sql
1.
2.
3.
4.
5.
6.
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:
Код: sql
1.
EXEC lt_GetOrganizationByUID @OrganizationUID = '1D7E654A-373C-4F25-909E-81645EB29294'
...
Рейтинг: 0 / 0
Долгое выполнение хранимых процедур
    #39740589
gepard1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mind, "Так что запускайте еще раз с включенным актуальным планом и выкладывайте его сюда, желательно в виде виде файла, а не картинки ("Save Execution Plas as")". Можно поподробней где этот актуальный план включать, как потом файл получить. Выполнять буду как хранимую процедуру через EXEC.
...
Рейтинг: 0 / 0
Долгое выполнение хранимых процедур
    #39740591
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gepard1980,

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

Попробуйте еще раз запустить вот этот запрос, но уже для базы WebLeader:
Index Usage Statistics
Код: 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.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
/* 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)

...
Рейтинг: 0 / 0
Долгое выполнение хранимых процедур
    #39740592
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gepard1980,
...
Рейтинг: 0 / 0
Долгое выполнение хранимых процедур
    #39740593
gepard1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mind, индекс конечно есть по полю uid_obj кластерный.
...
Рейтинг: 0 / 0
Долгое выполнение хранимых процедур
    #39740595
gepard1980
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mind, спасибо - завтра с утра буду пробовать. Сейчас запустил ребилд индексов всей базы lion_data.
...
Рейтинг: 0 / 0
25 сообщений из 131, страница 4 из 6
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Долгое выполнение хранимых процедур
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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