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

Откуда: Ярославль
Сообщений: 211
Есть база на MS SQL Server 2008R2. Используется практически только для чтения. Редко что в нее пишется. Работа с ней ведется через хранимые процедуры. Нагрузка на сам сервер в боевом режиме 3000 транзакций в секунду. Когда начались тормоза - запустил профайлер, поставил условие duration > 2000 ms. Получил результаты - скриншот прикрепил. Даже простая выборка по индексному полю типа lt_GetOrganizationByUID занимает почти 4 секунды. Внутри процедуры SELECT uid_org, uid_user, name FROM lt_Organizations WHERE @OrganizationUID = uid_obj. База находится в режиме 'read committed snapshot'. Файл данных на одном диске, лог транзакций на другом. В чем может быть причина тормозов? Что еще нужно посмотреть?

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

Откуда:
Сообщений: 985
Вначале смотрите ожидания. Нагрузку на диски / проц. Анализируете "долгие" запросы и их планы. Может банально индексов не хватает. Может индексы хреновые выбираются. Может прослушивание параметров и тд. Начните с простого - посмотреть что с машиной.
26 ноя 18, 14:46    [21745034]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
felix_ff
Member

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

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

у вас там в процедурах случаем каких нибудь методов ole автоматизации, запросов на удаленные ресурсы, или банально waitfor-конструкций нет?
26 ноя 18, 15:23    [21745079]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
Владислав Колосов
Member

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

Можете посмотреть типы ожиданий административными представлениями. Однако, они работают кумулятивно, если началось недавно, то ничего не найдёте.
26 ноя 18, 15:40    [21745103]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
gepard1980
Member

Откуда: Ярославль
Сообщений: 211
felix_ff, там максимально простые выборки. никакой ole автоматизации, запросов на удаленные ресурсы, waitfor-конструкций нет. индексы вроде все нужные есть. tuning advisor ничего не нашел для оптимизации.
26 ноя 18, 15:41    [21745105]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 5977
Лучше воспользуйтесь счетчиками производительности, теми, что в винде.
26 ноя 18, 15:42    [21745106]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
L_argo
Member

Откуда:
Сообщений: 445
Обновите статистику (with fullscan) по самым популярным таблицам.

зы: tunning advisor - тупица. Не находит очевиднейших вещей.
26 ноя 18, 16:07    [21745124]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
felix_ff
Member

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

отследите еще события SP:Completed и SP:StmtCompleted - вторая отследит какая именно инструкция дает такую продолжительность.

а вот если SP:Completed будет маленьким, то тогда можно посмотреть в сторону времени компиляции, нагрузки на память и пропускную способность сети.
26 ноя 18, 16:30    [21745151]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 5671
На всякий случай: в RPC буква R - Remote
26 ноя 18, 16:32    [21745156]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
gepard1980
Member

Откуда: Ярославль
Сообщений: 211
felix_ff, буду пробовать.
26 ноя 18, 16:54    [21745174]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
L_argo
Member

Откуда:
Сообщений: 445
А раньше были тормоза ?
Насколько с тех пор вырос объем данных ?
Было ли какое-то событие в базе, после которого всё это началось ?

Речь про добавление полей, индексов, правку ключевых ХП, вью и т.д.
26 ноя 18, 16:58    [21745178]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
gepard1980
Member

Откуда: Ярославль
Сообщений: 211
L_argo, изменений не было. но данных стало конечно больше. Сейчас БД около 70 Гб.
26 ноя 18, 17:34    [21745220]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
gepard1980
Member

Откуда: Ярославль
Сообщений: 211
В базу редко что пишется. Восновном читается. А лог транзакций постоянно растет. Сама база 70 Гб. Лог транзакций до 20 доходит. AutoShrink стоит. Но приходится вручную обрезать.
27 ноя 18, 09:26    [21745706]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
L_argo
Member

Откуда:
Сообщений: 445
gepard1980
В базу редко что пишется. Восновном читается. А лог транзакций постоянно растет. Сама база 70 Гб. Лог транзакций до 20 доходит. AutoShrink стоит. Но приходится вручную обрезать.
Модель логирования БД какая (Full, Simple) ?
Нужен настроенный джоб по урезке логов.
27 ноя 18, 10:27    [21745764]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
invm
Member

Откуда: Москва
Сообщений: 8218
gepard1980
В базу редко что пишется. Восновном читается. А лог транзакций постоянно растет.
Лог транзакций не может расти, тем более постоянно, если в базу ничего не пишется. Вам об этом уже писали.

Если по профайлеру у запроса duration >= 2000, а CPU = 0 или около того - значит имеют место ожидания каких-то ресурсов. И об этом вам тоже писали.
Чтобы выяснить какие именно, нужно:
1. Воспроизвести проблему в SSMS
2. Для сессии из п.1 настроить и запустить соответственно настроенную сессисю Extended Events и проанализировать полученный результат. Пример тут.
27 ноя 18, 10:33    [21745776]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
gepard1980
Member

Откуда: Ярославль
Сообщений: 211
L_argo, модель SIMPLE.
27 ноя 18, 11:09    [21745803]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
gepard1980
Member

Откуда: Ярославль
Сообщений: 211
invm, "Если по профайлеру у запроса duration >= 2000, а CPU = 0" - да, это так. Конечно запись в базу есть, но на порядок меньше чем выборки. 1. "Воспроизвести проблему в SSMS" - не представляется возможным, т.к. базу юзает веб-служба с нагрузкой 200 запросов в секунду. Попробую по вашей ссылке ловить где ожидания происходят.
27 ноя 18, 11:19    [21745821]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
invm
Member

Откуда: Москва
Сообщений: 8218
gepard1980
"Воспроизвести проблему в SSMS" - не представляется возможным, т.к. базу юзает веб-служба с нагрузкой 200 запросов в секунду.
Не нужно выполнять в SSMS 200 запросов в секунду.
Достаточно взять любой из трассы и добиться такого же результата при выполнении.
27 ноя 18, 11:26    [21745835]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
gepard1980
Member

Откуда: Ярославль
Сообщений: 211
invm, пробую использовать процедуру WhoIsActive. Прикрепил скрин. Селекты на чем-то стоят.

К сообщению приложен файл. Размер - 19Kb
27 ноя 18, 11:36    [21745850]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
invm
Member

Откуда: Москва
Сообщений: 8218
gepard1980
Селекты на чем-то стоят.
Селекты "стоят" на физических чтениях данных.
27 ноя 18, 11:48    [21745865]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
gepard1980
Member

Откуда: Ярославль
Сообщений: 211
invm, нагуглил, что длительное время ожидания может указывать на проблемы с дисковой подсистемой. или может база коррупнутая стала после внештатной перезагрузки сервера. поможет ли DBCC CHECKDB ('WebLeader', REPAIRALLOWDATA_LOSS)?
27 ноя 18, 11:59    [21745881]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
gepard1980
Member

Откуда: Ярославль
Сообщений: 211
invm, выполнил процедуру Glenn Berry для получения wait stats:

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

Откуда: Ярославль
Сообщений: 211
invm, для определения процентного соотношение ожиданий в системе запустил процедуру, получил следующее:

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

Откуда: Москва
Сообщений: 8218
gepard1980,

Судя по всему, у вас банальная нехватка памяти. Покажите результат выполнения:
select
 pc.*
from
 (
  values
   (N'SQLServer:Memory Manager', N'Total Server Memory (KB)'),
   (N'SQLServer:Memory Manager', N'Target Server Memory (KB)'),
   (N'SQLServer:Buffer Manager', N'Page life expectancy')
 ) t(object_name, counter_name) join
 sys.dm_os_performance_counters pc on pc.object_name = t.object_name and pc.counter_name = t.counter_name;
27 ноя 18, 12:26    [21745919]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
L_argo
Member

Откуда:
Сообщений: 445
Если сервер виртуализирован, то проверьте, нет ли высоконагруженно-дисковых задач на "смежных" с ним серверах.

У нас такое было: сервер БД иногда "укладывал" почту на "смежном" сервере.

Но проще сначала убедицца, что все индексы на месте. И обновить статистики.
Это даст больше пользы, чем копание в разного рода "полезных" утилитах.

Потом убедиться, что нет бесконечно висящих транзакций. Иногда такое допускают разработчики.
Из-за этого могут начинать накапливаться неясного рода блокировки и ожидания. :)

А еще время от времени ребутайте сервер, если есть возможность.
27 ноя 18, 12:26    [21745921]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4 5 6   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить