Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как и когда правильно обслуживать статистику в OLTP системе?
|
|||
|---|---|---|---|
|
#18+
Всем привет! Подскажите пожалуйста, как и когда правильно обслуживать статистику в OLTP системе? Система Microsoft SQL Server 2012 (SP4) (KB4018073) - 11.0.7001.0 (X64) Aug 15 2017 10:23:29 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor) В системе AlweysOn из 2-ух машин, пишем на одной читаем на другой, синхронный режим доступности. В базе включены параметры автоматического создания и пересчёта статистики. Никак не могу подобрать правильную комбинацию плана обслуживания статистики... Пробовал так 1. sp_updatestats 2. Перекомпиляция процедур (sp_recompile для всех процедур) После выполнения этих действий сервер начинает работать заметно быстрее (Zabix не даст соврать). Поставил эти задачи на автовыполнение с интервалом 1 час, в основном система стала работать так, как и ожидалось "заметно быстрее" после выполнения процедур, НО переодически, после выполнения этих задача результат получаю с точностью до наоборот, сервер начинает жутко тормозить, съедает всё процессорное время. Пока он тупит и тормозит я вижу что хранимые процедуры, которые в обчном режиме выполняются моментально, работают по несколько десятков минут. Лечиться так - kill всем зависшим процесcам, DBCC FREEPROCCACHE и опять полёт нормальный как нивчём не бывало. Кто-нибудь сталкивался с подобной ситуацией? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2018, 12:21 |
|
||
|
Как и когда правильно обслуживать статистику в OLTP системе?
|
|||
|---|---|---|---|
|
#18+
MandarinПробовал так 1. sp_updatestats 2. Перекомпиляция процедур (sp_recompile для всех процедур)и вы понимаете, что при этом происходит? это я вот к этому MandarinЛечиться так - kill всем зависшим процесcам, DBCC FREEPROCCACHE и опять полёт нормальный как нивчём не бывало.про статистики нормально написано в доке ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2018, 13:18 |
|
||
|
Как и когда правильно обслуживать статистику в OLTP системе?
|
|||
|---|---|---|---|
|
#18+
MandarinНикак не могу подобрать правильную комбинацию плана обслуживания статистики... Пробовал так 1. sp_updatestats 2. Перекомпиляция процедур (sp_recompile для всех процедур) Зачем? Если в системе количество данных стабильно - нет смысла пересчитывать неизменяющуюся статистику. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2018, 13:33 |
|
||
|
Как и когда правильно обслуживать статистику в OLTP системе?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovMandarinНикак не могу подобрать правильную комбинацию плана обслуживания статистики... Пробовал так 1. sp_updatestats 2. Перекомпиляция процедур (sp_recompile для всех процедур) Зачем? Если в системе количество данных стабильно - нет смысла пересчитывать неизменяющуюся статистику. Система достаточно динамична, данные там изменяются круглосуточно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2018, 14:29 |
|
||
|
Как и когда правильно обслуживать статистику в OLTP системе?
|
|||
|---|---|---|---|
|
#18+
ДедушкаMandarinПробовал так 1. sp_updatestats 2. Перекомпиляция процедур (sp_recompile для всех процедур)и вы понимаете, что при этом происходит? это я вот к этому MandarinЛечиться так - kill всем зависшим процесcам, DBCC FREEPROCCACHE и опять полёт нормальный как нивчём не бывало.про статистики нормально написано в доке Спасибо за ссылку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2018, 14:29 |
|
||
|
Как и когда правильно обслуживать статистику в OLTP системе?
|
|||
|---|---|---|---|
|
#18+
Mandarin, только не подумайте, что это лечение, это приём болеутоляющих. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2018, 14:41 |
|
||
|
Как и когда правильно обслуживать статистику в OLTP системе?
|
|||
|---|---|---|---|
|
#18+
Владислав КолосовMandarin, только не подумайте, что это лечение, это приём болеутоляющих. Подскажите направление на лечение :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.05.2018, 14:56 |
|
||
|
Как и когда правильно обслуживать статистику в OLTP системе?
|
|||
|---|---|---|---|
|
#18+
MandarinВладислав КолосовMandarin, только не подумайте, что это лечение, это приём болеутоляющих. Подскажите направление на лечение :)Направление - Parameter Sniffing Если кратко, то после ваших манипуляций все процедуры перекомпилиреются, если вам не повезет, то процедура первый раз вызывается с "плохими" параметрами и соответственно строится "плохой" план, ну и так до следующей рекомпиляции. Смотреть надо каждый запрос/план индивидуально, общего решения проблемы нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 03:38 |
|
||
|
Как и когда правильно обслуживать статистику в OLTP системе?
|
|||
|---|---|---|---|
|
#18+
MindMandarinпропущено... Подскажите направление на лечение :)Направление - Parameter Sniffing Если кратко, то после ваших манипуляций все процедуры перекомпилиреются, если вам не повезет, то процедура первый раз вызывается с "плохими" параметрами и соответственно строится "плохой" план, ну и так до следующей рекомпиляции. Смотреть надо каждый запрос/план индивидуально, общего решения проблемы нет. Нам повезёт :) потому, что мы используем подсказку option (optimize for unknown) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 08:15 |
|
||
|
Как и когда правильно обслуживать статистику в OLTP системе?
|
|||
|---|---|---|---|
|
#18+
Mandarin Включите флаг 2371, в 2016 эта логика автоапдейта уже включена по умолчанию, если конечо совместимость базы выставлена в 130. 2371 изменяет логику автоапдейта с тупой процентовки на динамику зависящую от колличества измененных строк и процентовку. Плюс можно статистику упдейтить вручную/динамически, логика автоапдейта примерно совпадает с логикой скрипта ниже. Естественно перекомпиляции процедур полезут только по тем процедурам что затронуты динамическим апдейтом. Код: 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. 51. 52. 53. 54. 55. 56. 57. 58. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.05.2018, 18:36 |
|
||
|
Как и когда правильно обслуживать статистику в OLTP системе?
|
|||
|---|---|---|---|
|
#18+
Col, Большое спасибо за скрипт! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.05.2018, 09:46 |
|
||
|
Как и когда правильно обслуживать статистику в OLTP системе?
|
|||
|---|---|---|---|
|
#18+
Вопрос возник с новой силой :) Поправьте меня если я ошибаюсь 1. При обновлении статистики, статистика сначала удаляется, потом создаётся снова, это я понял из описании опции incremental 2. При включенном AlweysOn, время между удалением статистики и её созданием, на читающей реплике, может быть достаточно продолжительным, например когда много данных синхронизируется. 3. Когда статистика удалена и ещё не создана, запросы, которые выполняются на читающей реплике, будут тормозить, потому что выполняются без статистики. И как раз получается такая ситуация как я описал в начале этого топика - тормоза на читающей реплике. Если я прав, то у меня вопрос как обновлять статистику без удаления? p.s. incremental не предлагать, т.к. он не поддерживается в 2012 версии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2018, 16:02 |
|
||
|
Как и когда правильно обслуживать статистику в OLTP системе?
|
|||
|---|---|---|---|
|
#18+
Mandarin1. При обновлении статистики, статистика сначала удаляется, потом создаётся снова, это я понял из описании опции incremental В документации описана логика процесса, а не физика. К тому же перевод не совсем корректный. Под "удаляется" следует понимать, что статистика целиком заменяется на новую. Mandarin3. Когда статистика удалена и ещё не создана, запросы, которые выполняются на читающей реплике, будут тормозить, потому что выполняются без статистики.Для выполнения запроса статистика не требуется. Она нужна при компиляции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2018, 18:50 |
|
||
|
Как и когда правильно обслуживать статистику в OLTP системе?
|
|||
|---|---|---|---|
|
#18+
Mandarin1. При обновлении статистики, статистика сначала удаляется, потом создаётся сноваПриведите хотя бы одну логическую причину почему разработчики SQL Server-a могли бы это так реализовать? Не ищите проблем там где их нет. Лучше достаньте план выполнения процедур(ы) в момент когда все тормозит и сравните с обычным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2018, 20:43 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39652256&tid=1689570]: |
0ms |
get settings: |
6ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
92ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 264ms |
| total: | 466ms |

| 0 / 0 |
