Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Есть база на 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'. Файл данных на одном диске, лог транзакций на другом. В чем может быть причина тормозов? Что еще нужно посмотреть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 14:40 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Вначале смотрите ожидания. Нагрузку на диски / проц. Анализируете "долгие" запросы и их планы. Может банально индексов не хватает. Может индексы хреновые выбираются. Может прослушивание параметров и тд. Начните с простого - посмотреть что с машиной. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 14:46 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
gepard1980, маленькие значения по reads. врядли это тормоза инструкций выборки. у вас там в процедурах случаем каких нибудь методов ole автоматизации, запросов на удаленные ресурсы, или банально waitfor-конструкций нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 15:23 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
gepard1980, Можете посмотреть типы ожиданий административными представлениями. Однако, они работают кумулятивно, если началось недавно, то ничего не найдёте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 15:40 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
felix_ff, там максимально простые выборки. никакой ole автоматизации, запросов на удаленные ресурсы, waitfor-конструкций нет. индексы вроде все нужные есть. tuning advisor ничего не нашел для оптимизации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 15:41 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Лучше воспользуйтесь счетчиками производительности, теми, что в винде. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 15:42 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Обновите статистику (with fullscan) по самым популярным таблицам. зы: tunning advisor - тупица. Не находит очевиднейших вещей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 16:07 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
gepard1980, отследите еще события SP:Completed и SP:StmtCompleted - вторая отследит какая именно инструкция дает такую продолжительность. а вот если SP:Completed будет маленьким, то тогда можно посмотреть в сторону времени компиляции, нагрузки на память и пропускную способность сети. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 16:30 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
На всякий случай: в RPC буква R - Remote ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 16:32 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
felix_ff, буду пробовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 16:54 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
А раньше были тормоза ? Насколько с тех пор вырос объем данных ? Было ли какое-то событие в базе, после которого всё это началось ? Речь про добавление полей, индексов, правку ключевых ХП, вью и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 16:58 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
L_argo, изменений не было. но данных стало конечно больше. Сейчас БД около 70 Гб. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.11.2018, 17:34 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
В базу редко что пишется. Восновном читается. А лог транзакций постоянно растет. Сама база 70 Гб. Лог транзакций до 20 доходит. AutoShrink стоит. Но приходится вручную обрезать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2018, 09:26 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
gepard1980В базу редко что пишется. Восновном читается. А лог транзакций постоянно растет. Сама база 70 Гб. Лог транзакций до 20 доходит. AutoShrink стоит. Но приходится вручную обрезать.Модель логирования БД какая (Full, Simple) ? Нужен настроенный джоб по урезке логов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2018, 10:27 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
gepard1980В базу редко что пишется. Восновном читается. А лог транзакций постоянно растет.Лог транзакций не может расти, тем более постоянно, если в базу ничего не пишется. Вам об этом уже писали. Если по профайлеру у запроса duration >= 2000, а CPU = 0 или около того - значит имеют место ожидания каких-то ресурсов. И об этом вам тоже писали. Чтобы выяснить какие именно, нужно: 1. Воспроизвести проблему в SSMS 2. Для сессии из п.1 настроить и запустить соответственно настроенную сессисю Extended Events и проанализировать полученный результат. Пример тут . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2018, 10:33 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
L_argo, модель SIMPLE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2018, 11:09 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
invm, "Если по профайлеру у запроса duration >= 2000, а CPU = 0" - да, это так. Конечно запись в базу есть, но на порядок меньше чем выборки. 1. "Воспроизвести проблему в SSMS" - не представляется возможным, т.к. базу юзает веб-служба с нагрузкой 200 запросов в секунду. Попробую по вашей ссылке ловить где ожидания происходят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2018, 11:19 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
gepard1980"Воспроизвести проблему в SSMS" - не представляется возможным, т.к. базу юзает веб-служба с нагрузкой 200 запросов в секунду.Не нужно выполнять в SSMS 200 запросов в секунду. Достаточно взять любой из трассы и добиться такого же результата при выполнении. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2018, 11:26 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
invm, пробую использовать процедуру WhoIsActive. Прикрепил скрин. Селекты на чем-то стоят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2018, 11:36 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
gepard1980Селекты на чем-то стоят.Селекты "стоят" на физических чтениях данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2018, 11:48 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
invm, нагуглил, что длительное время ожидания может указывать на проблемы с дисковой подсистемой. или может база коррупнутая стала после внештатной перезагрузки сервера. поможет ли DBCC CHECKDB ('WebLeader', REPAIRALLOWDATA_LOSS)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2018, 11:59 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
invm, выполнил процедуру Glenn Berry для получения wait stats: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2018, 12:14 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
invm, для определения процентного соотношение ожиданий в системе запустил процедуру, получил следующее: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2018, 12:20 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
gepard1980, Судя по всему, у вас банальная нехватка памяти. Покажите результат выполнения: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2018, 12:26 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Если сервер виртуализирован, то проверьте, нет ли высоконагруженно-дисковых задач на "смежных" с ним серверах. У нас такое было: сервер БД иногда "укладывал" почту на "смежном" сервере. Но проще сначала убедицца, что все индексы на месте. И обновить статистики. Это даст больше пользы, чем копание в разного рода "полезных" утилитах. Потом убедиться, что нет бесконечно висящих транзакций. Иногда такое допускают разработчики. Из-за этого могут начинать накапливаться неясного рода блокировки и ожидания. :) А еще время от времени ребутайте сервер, если есть возможность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2018, 12:26 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
invm, выполнил этот запрос. вернул 0 строк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2018, 12:36 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
gepard1980invm, выполнил этот запрос. вернул 0 строк. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2018, 12:42 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
L_argo, индексы все сразу проверил. Для баз используется отдельный диск. Базы две. Одна очень нагруженная, но с ней проблем нет. Бесконечных транзакций тоже нет. Вот думаю может отдельный диск задействовать для этой БД. ОЗУ на сервере 56 ГБ. Под SQL я отдаю 48. Сиквел сразу их отжирает. Опять же повторюсь вторая база еще более нагруженная с миллионными таблицами, но проблем нет с ней. Если бы ОЗУ не хватало, то и она бы подвисала. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2018, 12:42 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
buser, этот вернул такой результат: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2018, 12:58 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
gepard1980вернул такой результатИ это во время "тормозов"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2018, 14:01 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
invm, база круглосуточно находится под нагрузкой, т.к. веб-сервис постоянно работает. Вот текущее положение: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2018, 14:35 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
У тебя явное противоречие. gepard1980 Используется практически только для чтения. Редко что в нее пишется. gepard1980Нагрузка на сам сервер в боевом режиме 3000 транзакций в секунду. 1. Таблица большая ? Какой уровень изоляции транзакций ? Snapshot делает копии данных 2. Кэшируй запросы в БД в своём ПО ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2018, 15:02 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
gepard1980, У вас в секунду около 500 полных сканов и около 1500 физических чтений. При 70 Гб БД и 40 Гб памяти. Для начала выясните какие именно таблицы полностью сканируются и их объем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2018, 16:21 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
invmкакие именно таблицы полностью сканируются и их объем. Причем, в статистику полных сканов входят табличные переменные в хранимках… ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2018, 17:12 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Eleanor, табличные переменные используются, чтобы например скопом удалять. Пришло например веб-службе задание - удалить тысячу объектов с такими-то уидами. я соответственно вызываю хранимку и передаю ей табличную переменную с этими уидами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2018, 17:55 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Valery_B, база находится в режиме 'read committed snapshot'. Для кэширования использую Redis. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2018, 17:56 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
invm, я так понимаю надо планы запросов смотреть. хранимок на сервере около тысячи. самые используемые смотреть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2018, 17:59 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
invm, спрашиваю, потому как никогда на такой уровень не спускался. планы не анализировал. на что обратить внимание при их просмотре? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2018, 18:03 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
gepard1980, У вас имеется: 1. Постоянные физические чтения. В любом случае, это говорит о недостаточном объеме памяти - оперативных данных нет в буферном пуле и их приходится вычитывать с диска. 2. Постоянные ожидания на физических чтениях. Свидетельствует о прегруженности дисков. То, что файлы БД и лога на раных дисках ни о чем не говорит - может это логические диски на одном физическом, или физические на одном канале контроллера, или вообще они виртуальные. И т.д. и т.п. 3. Постоянный рост ЖТ при простой модели восстановления. Для log_reuse_wait_desc = active_transaction такое может быть только при наличии незакрытой долгоиграющей транзакции. Но вы этого не подтверждаете. А чудес не бывает. Исходя из перечисленного, можно дать только общие рекомендации: 1. Проверить версию сервера и обновиться до последнего SP/CU. 2. Как уже советовали, обновить статистику с полным сканированием. 3. Разбираться с дисковой подсистемой. 4. Нарастить объем памяти сервера. Возможно эти меры временно решат проблемы. Если характер работы с БД не предполагает вычитываний всего объема данных, то рано или поздно таки придется заняться оптимизацией запросов. И в рамках этого уже искать злостных читателей. Например, вот так: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 10:25 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
invm, благодарю за советы! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 11:56 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Я бы не сказал, что памяти мало, т.к. полтора миллиона чтений в секунду - хороший результат. PLE в 1200 это подтверждает. Возможна недозагрузка по ядрам из-за отсутствия распараллеливания (особенности запросов, настроенные ограничения) или недостаточное количество ядер. Я бы на это обратил внимание. Или задержки ввода-вывода, проверьте среднюю длину дисковых очередей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 12:25 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Владислав Колосов, открыл PerfMon. Вот длина очереди: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 13:24 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
invm, судя по данным resource monitor - вы правы. сильно нагружен диск с базами. попробую сегодня ночью перенести одну из них на другой физический диск. может поможет. если нет, придется SSD искать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 13:45 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
invm, вот еще: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 13:52 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
gepard1980, Первая строка - диск C обычно. На нем длина очереди 270 - это очень плохо. Чем он у вас нагружен? Tempdb или какие-то приложения работают? Файловое хранилище может быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 14:04 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Владислав КолосовЯ бы не сказал, что памяти мало, т.к. полтора миллиона чтений в секунду - хороший результат. PLE в 1200 это подтверждает.По-вашему сервер занимается физическими чтениями от безделья? Ознакомьтесь - https://solutioncenter.apexsql.com/top-sql-server-memory-pressure-counters/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 14:07 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
gepard1980попробую сегодня ночью перенести одну из них на другой физический диск. может поможет. если нет, придется SSD искать.Дело ваше, но это лечение следствия, а не причины. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 14:09 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
gepard1980В... Лог транзакций до 20 доходит. AutoShrink стоит. Но приходится вручную обрезать. А вы бекапы вообще делаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 14:09 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
invm, Вы полагаете, что тысяча физических чтений на полтора миллиона просмотров страниц - это много? Или вы думаете, что он одну страницу просматривает полтора миллиона раз? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 14:10 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
invm, PLE 1300+ как укладывается в Ваше предположение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 14:13 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Владислав Колосов, нет - первая строчка это как раз диск G с файлами баз данных (mdf). / ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 14:16 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Владислав КолосовPLE 1300+ как укладывается в Ваше предположение?Еще раз - ознакомьтесь со статьей и посчитайте рекомендуемый минимальный PLE для условий ТС'а. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 14:23 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Владислав Колосовinvm, PLE 1300+ как укладывается в Ваше предположение? значение PLE "просто на сейчас" не имеет никакой ценности ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 14:33 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 14:40 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
TaPaK, вот: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 14:55 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
gepard1980, Ну, имхо очередь к диску конечно не маленькая, но и не ужас. Судя по тому что у вас резултаты по "одной" строке возвращают, значить получаете сканы, не попадаете в индексы, всё это таскается между диском и памятью, тут и очередь и низкий ple. Разбирайте конкретные запросы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 15:04 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
a_voroninА вы бекапы вообще делаете?Даже стало любопытно: бекап чего надо сделать, что бы прекратить рост ЖТ при простой модели восстановления? ЗЫ: Не надоело бред генерировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 15:07 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
на картинке товарища на первой странице читаются поля с названиями file_word_upd, keyfilebody. вопрос: какого типа эти поля? если это блобы, то поздравимся: они не кэшируются, т.е. каждый раз начитываются заново с диска ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 15:54 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
При такой очереди диска может и не катастрофа, когда запросы "висят" мертво, но нельзя сказать, что работа комфортна. Есть же резервы памяти, верхнюю границу можно увеличить до 60Гб для SQL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 16:20 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Владислав КолосовПри такой очереди диска может и не катастрофа, когда запросы "висят" мертво, но нельзя сказать, что работа комфортна. Есть же резервы памяти, верхнюю границу можно увеличить до 60Гб для SQL? если это блобы, то хоть терабайт памяти зафигачь, будет их читать с диска каждый раз заново ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 16:25 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Владислав Колосов, это я оставил для запуска студий и других программ. тоже кушать хотят. думаю увеличение с 45 до 55 например (а всего 58) ничего не даст. сиквел сожрет и эту десятку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 16:29 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Yasha123, там, похоже, комплексная проблема... Блобы -то да, но они разве повлияли бы на PLE? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 16:29 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Yasha123, спасибо, уберу их из запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 16:30 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
gepard1980, Ну, знаете ли... Тогда Вам следовало очень хорошо запастись памятью, студия может и 16 Гб скушать. А Вы такую нагрузку дали серверу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 16:31 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Владислав Колосов, ищу какой-то баланс. сиквелу - 45. 10 - приложениям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 16:37 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
gepard1980, Есть вероятность что у вас там много сканов и память постоянно вытесняется сначала одними таблицами потом другими. Базы большие? Покажите распределение памяти по базам: Buffer By Database Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Ну и потом для той базы что которая больше всего памяти использует запустите Buffer By Object Код: 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. 43. 44. 45. 46. 47. 48. 49. 50. и 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 22:31 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
gepard1980Владислав Колосов, ищу какой-то баланс. сиквелу - 45. 10 - приложениям.На сервере БД не должно быть других приложений! Сколько у вас свободной памяти на сервере? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 22:34 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Mind, первое выполнил. А в двух других скриптах не понял, где указывать самую большую БД (в моем случае это lion_data)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 23:03 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Mind, размер базы lion_data 110 Гб. Базы WebLeader 75 Гб. На сервере всего 58 Гб ОЗУ. 45 Гб выделил сиквелу. Остальное про запас оставил. Виндовый процесс-менеджер показывает 7 Гб свободно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 23:06 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Mind, из приложений только SSMS и DBForge. Естественно никаких FTP, NoSQL и т.д. на этом сервере нет. Они на другом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 23:13 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
gepard1980, Просто перейдите в нужную базу перед запуском скрипта. Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2018, 23:59 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
gepard1980Mind, первое выполнил. А в двух других скриптах не понял, где указывать самую большую БД (в моем случае это lion_data)?У вас 37% (16Гб) пустого места внутри индексов. Вы rebuild/reorginize индексов хоть раз делали? Хотя это конечно могут быть блобы, но все равно вряд ли так много. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 00:02 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Mind, есть job который сначала проверку на целостность делает, а потом ребилд индексов. посмотрел сейчас лог - он всегда останавливался на ошибке при DBCC CHECKDB на базе WebLeader и дальше соответственно не шел. надо будет ночью сегодня запустить джоб на ребилд индексов. а ошибка такая: Executing the query "DBCC CHECKDB(N'WebLeader') WITH NO_INFOMSGS " failed with the following error: "Table error: Object ID 0, index ID -1, partition ID 0, alloc unit ID 0 (type Unknown), page ID (1:9380353) contains an incorrect page ID in its page header. The PageId in the page header = (0:0). Table error: Object ID 0, index ID -1, partition ID 0, alloc unit ID 0 (type Unknown), page ID (1:9380354) contains an incorrect page ID in its page header. The PageId in the page header = (0:0). Table error: Object ID 0, index ID -1, partition ID 0, alloc unit ID 0 (type Unknown), page ID (1:9451372) contains an incorrect page ID in its page header. The PageId in the page header = (0:0). Object ID 367395005, index ID 1, partition ID 72058363036303360, alloc unit ID 72058364643835904 (type In-row data): Page (1:9451372) could not be processed. See other errors for details. Table error: Object ID 367395005, index ID 1, partition ID 72058363036303360, alloc unit ID 72058364643835904 (type In-row data). Index node page (0:0), slot 0 refers to child page (1:9451372) and previous child (0:0), but they were not encountered. Object ID 624671800, index ID 1, partition ID 72058362590003200, alloc unit ID 72058364196487168 (type In-row data): Page (1:9380354) could not be processed. See other errors for details. Table error: Object ID 624671800, index ID 1, partition ID 72058362590003200, alloc unit ID 72058364196487168 (type In-row data). Index node page (0:0), slot 0 refers to child page (1:9380354) and previous child (0:0), but they were not encountered. Object ID 640671857, index ID 1, partition ID 72058362590068736, alloc unit ID 72058364196552704 (type In-row data): Page (1:9380353) could not be processed. See other errors for details. Table error: Object ID 640671857, index ID 1, partition ID 72058362590068736, alloc unit ID 72058364196552704 (type In-row data). Index node page (0:0), slot 0 refers to child page (1:9380353) and previous child (0:0), but they were not encountered. Table error: page (1:22851) allocated to object ID 1627561255, index ID 1, partition ID 72058340014751744, alloc unit ID 72058341621170176 (type In-row data) was not seen. The page may be invalid or may have an incorrect alloc unit ID in its header. Table error: Object ID 1627561255, index ID 1, partition ID 72058340014751744, alloc unit ID 72058341621170176 (type In-row data). Index node page (0:0), slot 0 refers to child page (1:22851) and previous child (0:0), but they were not encountered. Table error: page (1:22848) allocated to object ID 1643561312, index ID 1, partition ID 72058340014817280, alloc unit ID 72058341621235712 (type In-row data) was not seen. The page may be invalid or may have an incorrect alloc unit ID in its header. Table error: Object ID 1643561312, index ID 1, partition ID 72058340014817280, alloc unit ID 72058341621235712 (type In-row data). Index node page (0:0), slot 0 refers to child page (1:22848) and previous child (0:0), but they were not encountered. CHECKDB found 0 allocation errors and 3 consistency errors not associated with any single object. CHECKDB found 0 allocation errors and 2 consistency errors in table 'sys.ifts_comp_fragment_1166627199_1279643' (object ID 367395005). CHECKDB found 0 allocation errors and 2 consistency errors in table 'sys.ifts_comp_fragment_1166627199_1279308' (object ID 624671800). CHECKDB found 0 allocation errors and 2 consistency errors in table 'sys.ifts_comp_fragment_4649743_10289803' (object ID 640671857). CHECKDB found 0 allocation errors and 2 consistency errors in table 'sys.ifts_comp_fragment_4649743_9953028' (object ID 1627561255). CHECKDB found 0 allocation errors and 2 consistency errors in table 'sys.ifts_comp_fragment_4649743_9953029' (object ID 1643561312). CHECKDB found 0 allocation errors and 13 consistency errors in database 'WebLeader'. repair_allow_data_loss is the minimum repair level for the errors found by DBCC CHECKDB (WebLeader).". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 08:52 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Mind, по второму скрипту относительно базы lion_data результаты такие: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 08:55 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Mind, по третьему скрипту относительно базы lion_data результаты такие. На что обратить внимание? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 08:56 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Mind, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 08:56 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
gepard1980Mind, есть job который сначала проверку на целостность делает, а потом ребилд индексов. посмотрел сейчас лог - он всегда останавливался на ошибке при DBCC CHECKDB на базе WebLeader и дальше соответственно не шел. надо будет ночью сегодня запустить джоб на ребилд индексов. а ошибка такая: У вас job на rebuild выпадает с ошибкой при проверке целостности? А что вам даст на ночь запуск этого jobа? Может сначала с чекдб разобраться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 08:59 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
PizzaPizza, посмотрел этот plan, там вообще нету check dbcc: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 09:05 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
gepard1980, Мне кажется, что если у вас есть постоянные ошибки целостности то с ними надо разбираться в первую очередь. Я лично не понял про что вы говорили тут gepard1980он всегда останавливался на ошибке при DBCC CHECKDB на базе WebLeader и дальше соответственно не шел Кто "он"? Job с ребилдом? Если у вас в этом джобе нет чека, то как запускается этот чек, который приводит к ошибке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 10:07 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
PizzaPizza, тот job я уже удалил, поэтому может что и попутал. Сделал новый, который только Check Integrity делает. Если он не справится, то придется наверно базу новую скриптом создать и перелить все таблицы из старой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 10:34 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
gepard1980Mind, по третьему скрипту относительно базы lion_data результаты такие. На что обратить внимание?А вот фиг его знает. Я думал у вас простой случай. Все что я пока вижу, это две больших таблицы на 100% загружены в память и в них огромное пустое место, которое лучше конечно убрать путем реиндекса. А вот дальше непонятно, ибо по самой большой таблице было всего 4 скана, так что непонятно что ее заставляет сидеть в памяти, есть еще конечно один missing index, но вряд ли он решит что либо. Да и сканов по другим таблицам вообще почти нет. Либо там все настолько оптимизиронно либо кто то захинтовал все запросы forceseek-ами. Вероятно это тупиковый путь и нужно смотреть что то другое. Например диски. Кстати та процедура что вы привели в пером посте, если ее скопировать в ssms и запустить она будет так же долго выполняться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 11:25 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
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.11.2018, 11:45 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
gepard1980, OPTION (OPTIMIZE FOR UNKNOWN) или OPTION (RECOMPILE) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 11:47 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
TaPaK, с этим хинтом всегда одна секунда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 11:56 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
gepard1980TaPaK, с этим хинтом всегда одна секунда. Как понимаю, ТСу после добавления в процедуру хинта OPTION (OPTIMIZE FOR UNKNOWN) или OPTION (RECOMPILE) осталось только соответствующий покрывающий индекс создать? Ну и разобраться с постоянными ошибками целостности, обновить статистики with fullscan и перестроить индексы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 12:47 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Я не удивлен, что при такой нагрузке на диски они дают сбои. Чудо, что вообще до сих пор живы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 13:26 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
а разве после перестройки индексов нужно делать обновление статистики? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 13:37 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
StarikNavyа разве после перестройки индексов нужно делать обновление статистики? Статистика создаётся не только при создании индексов, так что, думаю, что да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 14:09 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Владислав Колосов, это Azure :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 14:59 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DaniilSeryiСтатистика создаётся не только это да. но после ребилда не нужно. хотя может я и не прав, и у ТС этот момент учтен ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 15:23 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Похоже что узкое место - диск. Придется SSD использовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 16:02 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
TaPaKgepard1980, OPTION (OPTIMIZE FOR UNKNOWN) или OPTION (RECOMPILE)Как же бесят такие советчики. Вы понимаете что OPTIMIZE FOR UNKNOWN и RECOMPILE делают прямо противоположное? А что, давайте без всякого анализа и плана попробуем все хинты которые только можно, авось какой нибудь подойдет. Я уж не говорю про то, что ТС запускает даже не процедуру а запрос, где сниффинга нет по определению и добавление OPTIMIZE FOR UNKNOWN вообще безсмыссленно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 21:38 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Mind, ТС как раз процедуру запускает, из которой и скопирован код: SELECT uid_org, uid_user, name FROM lt_Organizations WHERE @OrganizationUID = uid_obj ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 21:48 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
gepard1980TaPaK, с этим хинтом всегда одна секунда.Не слушайте тапки. Почти наверняка эти хинты не дали абсолютно ничего. Во время первого запуска данных не было в кэше, серверу пришлось читать с диска, который как мы знаем у вас очень медленный или чем то загружен. При последующих запусках данные были уже в памяти поэтому выполнение "быстрое". Для простой выборки по ключу даже 1 секунда это очень-очень медленно, поэтому у вас там скорее всего скан. Так что запускайте еще раз с включенным актуальным планом и выкладывайте его сюда, желательно в виде виде файла, а не картинки ("Save Execution Plas as"). Еще перед запуском можете включить: Код: sql 1. 2. Индекс по полю uid_obj у вас есть? И еще, то что вы выполняете это не процедура, а вырванный из процедеры запрос, разница может быть весьма значительной из-за parameter sniffing, хотя я сомневаюсь что у вас проблема именно в этом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 21:49 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
DaniilSeryiMind, ТС как раз процедуру запускает, из которой и скопирован код: SELECT uid_org, uid_user, name FROM lt_Organizations WHERE @OrganizationUID = uid_objЧто именно ТС называет "выполнил следующую процедуру" мы можем только догадываться. Википедия дает следующее определение: "Процедура — взаимосвязанная последовательность действий где-либо". Так что это может быть что угодно. Я сейчас окно открою и плюну на улицу, это тоже будет называться процедура. Вот это называется запрос (query/batch/statement): Код: sql 1. 2. 3. 4. 5. 6. А вот это вызов stored procedure: Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 21:59 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Mind, "Так что запускайте еще раз с включенным актуальным планом и выкладывайте его сюда, желательно в виде виде файла, а не картинки ("Save Execution Plas as")". Можно поподробней где этот актуальный план включать, как потом файл получить. Выполнять буду как хранимую процедуру через EXEC. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 22:07 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 22:12 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
gepard1980, ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 22:14 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Mind, индекс конечно есть по полю uid_obj кластерный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 22:14 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Mind, спасибо - завтра с утра буду пробовать. Сейчас запустил ребилд индексов всей базы lion_data. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 22:17 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
gepard1980Mind, индекс конечно есть по полю uid_obj кластерный.Ну тогда давайте план запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 22:53 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
StarikNavyDaniilSeryiСтатистика создаётся не только это да. но после ребилда не нужно. хотя может я и не прав, и у ТС этот момент учтен )При ребилде (не реорганизации) индексов статистика обновляется с фуллсканом, но есть колоночные статистики они не привязанны к индексам, да и не всегда все индексы нужно ребилдить. Умные скрипты (например от http://ola.hallengren.com) умеют делать ребилд, а потом обновлять только те статистики которые нужно. Стандартные же планы обслуживания тупы до безобразия и были созданы "для галочки", подходят только для маленьких баз, потому как лопатят все без разбора с дефолтными настройками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2018, 22:59 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Mind, авторНе слушайте тапки. Почти наверняка эти хинты не дали абсолютно ничего авторTaPaK, с этим хинтом всегда одна секунда ты занятный... Как разберёшься что делают эти хинты-приходи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 08:30 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Mind, "Попробуйте еще раз запустить вот этот запрос, но уже для базы WebLeader" - сделал, вот результат: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 09:14 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Mind, прикрепил план выполнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 09:31 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
— Есть ли у вас план, мистер Фикс? — Есть ли у меня план? Есть ли у меня план? Да у меня целых три плана! Select * это отличный план. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 10:02 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Mind, что на гуру скажет на автор <ColumnReference Column="@OrganizationUID" ParameterCompiledValue="{guid'1D7E654A-373C-4F25-909E-81645EB29294'}" ParameterRuntimeValue="{guid'1D7E654A-373C-4F25-909E-81645EB29294'}" /> ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 10:23 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
PizzaPizza, возвращаются 9 числовых полей без блобов. Думаю это не сильно влияет на перфоманс. Есть таблица с 70 полями. Вот из нее уже select * накладно делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 10:35 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Mind Стандартные же планы обслуживания тупы до безобразия и были созданы "для галочки", подходят только для маленьких баз, потому как лопатят все без разбора с дефолтными настройками. именно это и имел в виду ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 10:36 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
а план запроса топикстартеру, сказал еще 4 страницы назад, что надо бы выложить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 10:37 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
gepard1980Mind, прикрепил план выполнения.Ну собственно я именно это и боялся увидеть, но в тайне надеялся на чудо. Что вот там какой-то огромный такой косяк типа implicit conversion или что-то подобное, но нет. План со стоимостью 0.003 невозможно улучшить. Подводя итог, могу сказать только следующее: у вас очень-очень медленные диски. У меня больше нет никаких идей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 10:56 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Mind, спасибо! Читая ответы этой ветки и наблюдая за работой БД, дисков тоже пришел к этому. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 11:05 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Слёзы на глазах от такого анализа. Ответ дан ещё на первой странице 21745865 авторя именно это и боялся увидеть, но в тайне надеялся на чудо занавес ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 11:10 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
TaPaKMind, что на гуру скажет на автор <ColumnReference Column="@OrganizationUID" ParameterCompiledValue="{guid'1D7E654A-373C-4F25-909E-81645EB29294'}" ParameterRuntimeValue="{guid'1D7E654A-373C-4F25-909E-81645EB29294'}" /> О, да, мой косяк, был не прав! Как же глубоко я заблуждался!!!Ты это хотел услышать что-ли? Я не понял нафига ты привел эту вырезку из плана? Ты только ее увидел, сам план не смотрел? Что хотел то этим сказать? Что если не поставить рекомпайл или оптимайз фо анкноун то план сломается? Вместо поиска по кластерному сразу сканы попрут? Ты кстати так и не определился, хочешь ли ты чтобы оптимизатор узнал значения параметра и рекомпайлил тривиальный план каждый раз или все таки хочешь чтобы он компилировал под усредненные значения. Разница то огромная. Эффекта правда в данном конкретном случае будет ноль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 11:11 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Mind, автор таки хочешь чтобы он компилировал под усредненные значения агонь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 11:12 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
TaPaKСлёзы на глазах от такого анализа. Ответ дан ещё на первой странице 21745865 авторя именно это и боялся увидеть, но в тайне надеялся на чудо занавесНу мало ли, всякое бывает. Ты же надеялся на OPTION(RECOMPILE) Да и чтобы висело по 5 секунд на 5 чтениях это насколько нужно диски нагрузить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 11:14 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
MindTaPaKСлёзы на глазах от такого анализа. Ответ дан ещё на первой странице 21745865 пропущено... занавесНу мало ли, всякое бывает. Ты же надеялся на OPTION(RECOMPILE) Да и чтобы висело по 5 секунд на 5 чтениях это насколько нужно диски нагрузить? авторTaPaK, с этим хинтом всегда одна секунда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 11:17 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
TaPaKMind, автор таки хочешь чтобы он компилировал под усредненные значения агонь!Ну давай расскажи нам всем как работает OPTIMIZE FOR UNKNOWN, а мы послушаем. Поучимся у гуру, который умеет только давать советы без каких либо обоснований. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 11:18 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
MindTaPaKMind, пропущено... агонь!Ну давай расскажи нам всем как работает OPTIMIZE FOR UNKNOWN, а мы послушаем. Поучимся у гуру, который умеет только давать советы без каких либо обоснований. авторInstructs the query optimizer to use statistical data instead of the initial values for all local variables when the query is compiled and optimized, including parameters created with forced parameterization. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 11:19 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
TaPaKавторTaPaK, с этим хинтом всегда одна секундаагонь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 11:19 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
MindПроцедура — взаимосвязанная последовательность действий где-либо Я бы добавил, что процедура - это описание, а не действия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 11:21 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Владислав КолосовMindПроцедура — взаимосвязанная последовательность действий где-либо Я бы добавил, что процедура - это описание, а не действия. человек ещё не знает что это декларативный язык :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 11:22 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
TaPaKMindпропущено... Ну давай расскажи нам всем как работает OPTIMIZE FOR UNKNOWN, а мы послушаем. Поучимся у гуру, который умеет только давать советы без каких либо обоснований. авторInstructs the query optimizer to use statistical data instead of the initial values for all local variables when the query is compiled and optimized, including parameters created with forced parameterization. Заглулил, молодец! То есть настолько не уверен в своих знаниях или умениях объяснять что пришлось гуглить? И то что я сказал абсолютно тоже самое но своими словами тоже сложно было понять? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 11:23 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
MindTaPaKпропущено... пропущено... Заглулил, молодец! То есть настолько не уверен в своих знаниях или умениях объяснять что пришлось гуглить? И то что я сказал абсолютно тоже самое но своими словами тоже сложно было понять? где там про "средние" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 11:24 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Владислав КолосовMindПроцедура — взаимосвязанная последовательность действий где-либо Я бы добавил, что процедура - это описание, а не действия.Ну пожалуйтесь в википедию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 11:25 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Если я правильно помню, кто-то где-то рассказывал, что при Unknown предполагается равномерное распределение данных по страницам при том, что объем полезной информации занимает 30%. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 11:28 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
TaPaKMindпропущено... Заглулил, молодец! То есть настолько не уверен в своих знаниях или умениях объяснять что пришлось гуглить? И то что я сказал абсолютно тоже самое но своими словами тоже сложно было понять? где там про "средние"Ты понимаешь хоть то что там написано или просто скопировал? У тебя в статистических данных 200 строк со значениями, как ты будешь их использовать? Все сразу? Вот у тебя известно что в таблице есть: 1 значение 100 5 значений 200 20 значений 300 WHERE id = @id OPTIMIZE FOR UNKNOWN сколько строк вернет согласно оценке оптимизатора? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 11:34 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
MindTaPaKпропущено... где там про "средние"Ты понимаешь хоть то что там написано или просто скопировал? У тебя в статистических данных 200 строк со значениями, как ты будешь их использовать? Все сразу? Вот у тебя известно что в таблице есть: 1 значение 100 5 значений 200 20 значений 300 WHERE id = @id OPTIMIZE FOR UNKNOWN сколько строк вернет согласно оценке оптимизатора? согласно этому хинту актуальный план будет всегда учитывать значение статистики по переданным переменным, а на столбить ваши 20 строк или сколько вы там себе нафаназировали. Recompile же будет принудительно перекомпилировать запрос с проброшенным значением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 11:38 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
gepard1980PizzaPizza, возвращаются 9 числовых полей без блобов. Думаю это не сильно влияет на перфоманс. Есть таблица с 70 полями. Вот из нее уже select * накладно делать. Тривиальный план + 100% загружающий io + ошибки Table errorы = делайте чекдиск и разбирайтесь с дисками, надеюсь с бекапами у вас все хорошо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 19:04 |
|
||
|
Долгое выполнение хранимых процедур
|
|||
|---|---|---|---|
|
#18+
Наконец то. А столько пафоса было: "как разберешься - приходи". А в чем разница между "по переданным переменным" и "с проброшенным значением"? TaPaKсогласно этому хинту актуальный план будет всегда учитывать значение статистики по переданным переменным , а на столбить ваши 20 строк или сколько вы там себе нафаназировали. Recompile же будет принудительно перекомпилировать запрос с проброшенным значением.Так все таки, переданные переменные будут учитываться или нет? Потому что в твоей цитате из документации сказано прямо противоположное: TaPaKInstructs the query optimizer to use statistical data instead of the initial values for all local variablesВообще конечно тот кто писал документацию мягко говоря очень далек от SQL Server-а, потому что написал он полную чушь. Во-первых, о каких local variables идет речь если учитывать что для локальных переменных никакого parameter sniffing нет и быть не может, сервер по-дефолту не знает значения локальных переменных и это опция оптимизатора вообще тут не имеет никакого эффекта. Во-вторых "use statistical data" - то есть если не указать FOR UNKNOWN то оптимизатор не будет использовать "statistical data"? Что за бред вообще. Мне потому и смешно что ты процитировал это запутанное и по сути безсмысленное определение и не смог даже нормально перевести его. OPTIMIZE FOR UNKNOWN - или по сути оптимизация под неизвестное значение так и называется, потому что не важно видит оптимизатор значения параметров/переменных или нет, все равно мы ему говорим оптимизируй запрос так как будто для тебя эти значения неизвестны (UNKNOWN). Ну или еще более упрощенно - оптимизируй запрос так как если бы все параметры были переменными, для которых как мы знаем "просмотр значений" не работает по умолчанию. Именно поэтому, до существования такой опции можно было переназначить параметры локальным переменным и использовать уже их в запросе, и это приводило по сути к тому же эффекту. Ну а теперь самое интересное, вопрос на который ты не смог ответить, о том как сервер использует статистику для оценочного определения количества строк. Неужели даже интересно не было? Тест накидать за 2 минуты и самому проверить? Для саморазвития так сказать? Нет, зачем же. Гениям это не надо. Скрипт Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Результат: StmtText EstimateRowsDECLARE @id int = 100 NULLSELECT * FROM dbo.T WHERE id = @id OPTION(OPTIMIZE FOR UNKNOWN) 8.666667 |--Table Scan(OBJECT:([master].[dbo].[T]) WHERE:([master].[dbo].[T].[id]=[@id])) 8.666667 Откуда же берутся эти 8.67? Из статистики: RANGE_HI_KEY RANGE_ROWS EQ_ROWS DISTINCT_RANGE_ROWS AVG_RANGE_ROWS100 0 1 0 1200 0 5 0 1300 0 20 0 1 (1+5+20)/3=8.66667 TaPaKгде там про "средние"Это называется среднее арифметическое. Урок «Среднее арифметическое чисел», 5 класс P.S. Не забудь запатентовать что опция OPTIMIZE FOR UNKNOWN ускоряет работу дисков в 5 раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2018, 23:20 |
|
||
|
|

start [/forum/topic.php?all=1&fid=46&tid=1688681]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
38ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
81ms |
get tp. blocked users: |
1ms |
| others: | 249ms |
| total: | 398ms |

| 0 / 0 |
