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

Откуда: Ярославль
Сообщений: 240
invm, выполнил этот запрос. вернул 0 строк.
27 ноя 18, 12:36    [21745942]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
buser
Member

Откуда: Санкт-Петербург
Сообщений: 4537
gepard1980
invm, выполнил этот запрос. вернул 0 строк.

select
 pc.*
from
 (
  values
   (N'MSSQL$' + @@servicename + ':Memory Manager', N'Total Server Memory (KB)'),
   (N'MSSQL$' + @@servicename + ':Memory Manager', N'Target Server Memory (KB)'),
   (N'MSSQL$' + @@servicename + ':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:42    [21745957]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
gepard1980
Member

Откуда: Ярославль
Сообщений: 240
L_argo, индексы все сразу проверил. Для баз используется отдельный диск. Базы две. Одна очень нагруженная, но с ней проблем нет. Бесконечных транзакций тоже нет. Вот думаю может отдельный диск задействовать для этой БД. ОЗУ на сервере 56 ГБ. Под SQL я отдаю 48. Сиквел сразу их отжирает. Опять же повторюсь вторая база еще более нагруженная с миллионными таблицами, но проблем нет с ней. Если бы ОЗУ не хватало, то и она бы подвисала.
27 ноя 18, 12:42    [21745959]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
gepard1980
Member

Откуда: Ярославль
Сообщений: 240
buser, этот вернул такой результат:

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

Откуда: Москва
Сообщений: 9345
gepard1980
вернул такой результат
И это во время "тормозов"?
27 ноя 18, 14:01    [21746075]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
gepard1980
Member

Откуда: Ярославль
Сообщений: 240
invm, база круглосуточно находится под нагрузкой, т.к. веб-сервис постоянно работает. Вот текущее положение:

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

Откуда: Москва
Сообщений: 2018
У тебя явное противоречие.
gepard1980
Используется практически только для чтения. Редко что в нее пишется.

gepard1980
Нагрузка на сам сервер в боевом режиме 3000 транзакций в секунду.

1. Таблица большая ? Какой уровень изоляции транзакций ? Snapshot делает копии данных
2. Кэшируй запросы в БД в своём ПО
27 ноя 18, 15:02    [21746174]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
invm
Member

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

У вас в секунду около 500 полных сканов и около 1500 физических чтений. При 70 Гб БД и 40 Гб памяти.
Для начала выясните какие именно таблицы полностью сканируются и их объем.
27 ноя 18, 16:21    [21746297]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
Eleanor
Member

Откуда:
Сообщений: 2866
invm
какие именно таблицы полностью сканируются и их объем.

Причем, в статистику полных сканов входят табличные переменные в хранимках…
27 ноя 18, 17:12    [21746368]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
gepard1980
Member

Откуда: Ярославль
Сообщений: 240
Eleanor, табличные переменные используются, чтобы например скопом удалять. Пришло например веб-службе задание - удалить тысячу объектов с такими-то уидами. я соответственно вызываю хранимку и передаю ей табличную переменную с этими уидами.
27 ноя 18, 17:55    [21746440]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
gepard1980
Member

Откуда: Ярославль
Сообщений: 240
Valery_B, база находится в режиме 'read committed snapshot'. Для кэширования использую Redis.
27 ноя 18, 17:56    [21746443]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
gepard1980
Member

Откуда: Ярославль
Сообщений: 240
invm, я так понимаю надо планы запросов смотреть. хранимок на сервере около тысячи. самые используемые смотреть?
27 ноя 18, 17:59    [21746448]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
gepard1980
Member

Откуда: Ярославль
Сообщений: 240
invm, спрашиваю, потому как никогда на такой уровень не спускался. планы не анализировал. на что обратить внимание при их просмотре?
27 ноя 18, 18:03    [21746455]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
invm
Member

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

У вас имеется:
1. Постоянные физические чтения. В любом случае, это говорит о недостаточном объеме памяти - оперативных данных нет в буферном пуле и их приходится вычитывать с диска.
2. Постоянные ожидания на физических чтениях. Свидетельствует о прегруженности дисков. То, что файлы БД и лога на раных дисках ни о чем не говорит - может это логические диски на одном физическом, или физические на одном канале контроллера, или вообще они виртуальные. И т.д. и т.п.
3. Постоянный рост ЖТ при простой модели восстановления. Для log_reuse_wait_desc = active_transaction такое может быть только при наличии незакрытой долгоиграющей транзакции. Но вы этого не подтверждаете. А чудес не бывает.

Исходя из перечисленного, можно дать только общие рекомендации:
1. Проверить версию сервера и обновиться до последнего SP/CU.
2. Как уже советовали, обновить статистику с полным сканированием.
3. Разбираться с дисковой подсистемой.
4. Нарастить объем памяти сервера.

Возможно эти меры временно решат проблемы.
Если характер работы с БД не предполагает вычитываний всего объема данных, то рано или поздно таки придется заняться оптимизацией запросов. И в рамках этого уже искать злостных читателей. Например, вот так:
select top (100)
 st.sql_statement, qp.query_plan, qs.*
from
 sys.dm_exec_query_stats qs cross apply
 sys.dm_exec_query_plan(qs.plan_handle) qp cross apply
 sys.dm_exec_sql_text(qs.sql_handle) qt cross apply
 (
  select substring(
    qt.text,
    qs.statement_start_offset/2 + 1,
    (case when qs.statement_end_offset = -1 then len(convert(nvarchar(max), qt.text)) * 2 else qs.statement_end_offset end - qs.statement_start_offset)/2 + 1
   )
 ) st(sql_statement)
order by
 cast(qs.total_logical_reads as float) / qs.execution_count desc;
28 ноя 18, 10:25    [21746918]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
gepard1980
Member

Откуда: Ярославль
Сообщений: 240
invm, благодарю за советы!
28 ноя 18, 11:56    [21747083]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7754
Я бы не сказал, что памяти мало, т.к. полтора миллиона чтений в секунду - хороший результат. PLE в 1200 это подтверждает. Возможна недозагрузка по ядрам из-за отсутствия распараллеливания (особенности запросов, настроенные ограничения) или недостаточное количество ядер. Я бы на это обратил внимание.
Или задержки ввода-вывода, проверьте среднюю длину дисковых очередей.
28 ноя 18, 12:25    [21747154]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
gepard1980
Member

Откуда: Ярославль
Сообщений: 240
Владислав Колосов, открыл PerfMon. Вот длина очереди:

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

Откуда: Ярославль
Сообщений: 240
invm, судя по данным resource monitor - вы правы. сильно нагружен диск с базами. попробую сегодня ночью перенести одну из них на другой физический диск. может поможет. если нет, придется SSD искать.
28 ноя 18, 13:45    [21747311]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
gepard1980
Member

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

К сообщению приложен файл. Размер - 15Kb
28 ноя 18, 13:52    [21747324]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
Владислав Колосов
Member

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

Первая строка - диск C обычно. На нем длина очереди 270 - это очень плохо. Чем он у вас нагружен? Tempdb или какие-то приложения работают? Файловое хранилище может быть?
28 ноя 18, 14:04    [21747367]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
invm
Member

Откуда: Москва
Сообщений: 9345
Владислав Колосов
Я бы не сказал, что памяти мало, т.к. полтора миллиона чтений в секунду - хороший результат. PLE в 1200 это подтверждает.
По-вашему сервер занимается физическими чтениями от безделья? Ознакомьтесь - https://solutioncenter.apexsql.com/top-sql-server-memory-pressure-counters/
28 ноя 18, 14:07    [21747377]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
invm
Member

Откуда: Москва
Сообщений: 9345
gepard1980
попробую сегодня ночью перенести одну из них на другой физический диск. может поможет. если нет, придется SSD искать.
Дело ваше, но это лечение следствия, а не причины.
28 ноя 18, 14:09    [21747381]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4721
gepard1980
В... Лог транзакций до 20 доходит. AutoShrink стоит. Но приходится вручную обрезать.


А вы бекапы вообще делаете?
28 ноя 18, 14:09    [21747383]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
Владислав Колосов
Member

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

Вы полагаете, что тысяча физических чтений на полтора миллиона просмотров страниц - это много? Или вы думаете, что он одну страницу просматривает полтора миллиона раз?
28 ноя 18, 14:10    [21747387]     Ответить | Цитировать Сообщить модератору
 Re: Долгое выполнение хранимых процедур  [new]
Владислав Колосов
Member

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

PLE 1300+ как укладывается в Ваше предположение?
28 ноя 18, 14:13    [21747393]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4 5 6   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить