Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Процедура залипает на простом скрипте
|
|||
|---|---|---|---|
|
#18+
Добрый день, Помогите понять в чем может быть следующая проблема. Сервер - Microsoft SQL Server 2014 (SP2-GDR) (KB4019093) - 12.0.5207.0 (X64) Есть процедура, которая начинается со следующей простой выборки: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Суть этой выборки - найти список строк в tblOutLets, который по заданным столбцам отсутствует в OutletsAudit. Если подствить нужный мне период в выборку из первой таблицы, то я получаю результат в размере ~315 тыс строк. Если выполнить отдельно второй запрос, то получаю результат в размере ~290 тыс строк. Если выполнить целиком c EXCEPT, то получаю результат в размере ~43 тыс строк. При этом время выполнения составляет Код: plaintext Если запустить выполнение этого куска кода в рамках процедуры, то у меня процедура залипает на этом участке и висит бесконечно. Растет CPU, количество чтений в пределах 10-15. Это не всегда так. Данная проблема у меня впервые появилась на тестовой среде и тогда я ничего не смог поделать с ней (сбрасывал кеши планов, запускал процедуру с рекомпиляцией) и только пересоздание процедуры решило проблему. Сейчас эта проблема всплыла на продуктиве у клиента. Вариант - удалить и заново создать не вариант. Надо понять причину такого поведения. План выполнения той же выборки, но запущенной в рамках процедуры "2.sqlplan" Очень интересная картина выходит по планам. В первом случае видно, как он тянет много строк, а во втором ничего. Спасибо! P.S. Не судите строго, но я не смог понять, как приложить 2 плана по отдельности, поэтому архивом приатачил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2018, 10:53 |
|
||
|
Процедура залипает на простом скрипте
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2018, 10:57 |
|
||
|
Процедура залипает на простом скрипте
|
|||
|---|---|---|---|
|
#18+
мщдя... а то что у вас разные запросы никого не волнует ?? да и в обоих случаях у вас просят создать нужный индекс ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2018, 11:00 |
|
||
|
Процедура залипает на простом скрипте
|
|||
|---|---|---|---|
|
#18+
ну и сравнивать Actual vs Estimate из рвзных мест это всегда весело. авторОчень интересная картина выходит по планам. В первом случае видно, как он тянет много строк, а во втором ничего. a NL vs Hash вас не смутил... в общем курите ссылку ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2018, 11:00 |
|
||
|
Процедура залипает на простом скрипте
|
|||
|---|---|---|---|
|
#18+
Maxxмщдя... а то что у вас разные запросы никого не волнует ?? да и в обоих случаях у вас просят создать нужный индекс ? Вы о том, что я убрал INTO в первом варианте? Вот вместе с INTO план во вложении Индексы могу создать, но что они мне дадут в данном случае кроме ускорения? К примеру, текущая скорость меня устраивает. Или они решат мою проблему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2018, 11:05 |
|
||
|
Процедура залипает на простом скрипте
|
|||
|---|---|---|---|
|
#18+
TaPaKну и сравнивать Actual vs Estimate из рвзных мест это всегда весело. авторОчень интересная картина выходит по планам. В первом случае видно, как он тянет много строк, а во втором ничего. a NL vs Hash вас не смутил... в общем курите ссылку Спасибо за ссылку. Сейчас буду пытаться разобраться. Что касается планов, то первый я получил актуальный после обычной выборки, а второй взял из процедуры sp_WhoIsActive (Adam Machanic). Эта процедура разве Estimate план выдает? Только что проверил свою процедуру на другом сервере и там sp_WhoIsActive нарисовал план с большим потоком данных в отличии от того, что на продуктиве сейчас, где по 1 строке возвращает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2018, 11:10 |
|
||
|
Процедура залипает на простом скрипте
|
|||
|---|---|---|---|
|
#18+
TaPaKa NL vs Hash вас не смутил... в общем курите ссылку Моих знаний на текущий момент недостаточно, чтобы понять почему при обычной выборке он решил использовать Hash match, а внутри процедуры NL... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2018, 11:14 |
|
||
|
Процедура залипает на простом скрипте
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2018, 11:21 |
|
||
|
Процедура залипает на простом скрипте
|
|||
|---|---|---|---|
|
#18+
Товарищ TaPak натолкнул на мысль о разнице между физическим соединением. Я не любитель использовать OPTION, привык, что SQL сам найдет правильное решение, но в данном конкретном случае явно указал для своего скрипта внутри процедуры Код: sql 1. После этого процедура выполнилась быстро и правильно. Еще я попробовал перед запуском процедуры обновить статистику для указанных 2-х таблиц и после запускать процедуру. Результата ноль. Далее я взял и запихнул обновление статистики по 2-м таблицам в саму процедуру перед выполнением своей выборки. Результат - процедура выполнилась быстро и правильно. Для меня эта мистика какая-то. Буду читать ваши ссылки, может чего пойму... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2018, 12:31 |
|
||
|
Процедура залипает на простом скрипте
|
|||
|---|---|---|---|
|
#18+
otets1988Товарищ TaPak натолкнул на мысль о разнице между физическим соединением. Я не любитель использовать OPTION, привык, что SQL сам найдет правильное решение, но в данном конкретном случае явно указал для своего скрипта внутри процедуры Код: sql 1. После этого процедура выполнилась быстро и правильно. Еще я попробовал перед запуском процедуры обновить статистику для указанных 2-х таблиц и после запускать процедуру. Результата ноль. Далее я взял и запихнул обновление статистики по 2-м таблицам в саму процедуру перед выполнением своей выборки. Результат - процедура выполнилась быстро и правильно. Для меня эта мистика какая-то. Буду читать ваши ссылки, может чего пойму... Чудес нет. Есть разные Код: sql 1. для ваших подключений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2018, 12:34 |
|
||
|
Процедура залипает на простом скрипте
|
|||
|---|---|---|---|
|
#18+
aleks222, Мы вроде бы на одном языке общаемся, но я многое не понимаю )) Жизнь боль, а эффект Даннинга-Крюгера сила. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2018, 12:43 |
|
||
|
Процедура залипает на простом скрипте
|
|||
|---|---|---|---|
|
#18+
otets1988, прибить хешем это конечно агонь. Но статью вы решили не открывать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2018, 12:55 |
|
||
|
Процедура залипает на простом скрипте
|
|||
|---|---|---|---|
|
#18+
TaPaKotets1988, прибить хешем это конечно агонь. Но статью вы решили не открывать... С чего вы решили, что я статью решил не открывать? Если бы она была короткой, то я бы ее сразу прочитал, а так как она очень приличного размера, а решить проблему надо было немедленно, то я решил что-то сперва делать. Пусть это будет сейчас затычка без понимания сути. Но зато я теперь могу спокойно попытаться разобраться в сути пока затычка стоит и не давит на меня. otets1988Буду читать ваши ссылки, может чего пойму... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2018, 13:19 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=142&tid=1689419]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
| others: | 240ms |
| total: | 376ms |

| 0 / 0 |
