У нас є ця проблема у виробничому середовищі.
Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) - Enterprise Edition (64-розрядна) для Windows NT 6.1 (Build 7601: Service Pack 1).
SQL Server скидає всі (майже на 100%) старі плани виконання та відтворює їх щодня протягом ночі (з 23:00 до 8:00 ранку). Це траплялося навіть тоді, коли "статистика автоматичного оновлення" була у відключеному стані. Ми вмикали "статистику автоматичного оновлення" протягом останніх 2-3 тижнів. Але це все одно відбувається.
Ми насправді не знаємо, що викликає це поновлення планів, але ми впевнені, що не робимо це вручну.
Єдине, що насправді збігається з термінами відновлення планів - це робота з обслуговування БД, яку ми маємо: щоденна реорганізація індексу (коли фрагментація становить 5-30%) та щоденна перебудова індексу (коли фрагментація перевищує 30% ) робота. Зазвичай ця щоденна робота з технічного обслуговування здійснює лише реорганізацію (оскільки фрагментація індексу ніколи не перевищує 30% щоденно).
Вплив:
Ці новостворені плани змушують деякі дзвінки / запити UDF (які викликаються з UI / веб-сторінок) займають більше часу (хвилин на відміну від менше 1 секунди), і тому сеанси просто накопичуються, приймаючи процесор близько 90% .
Проблема знімається з того моменту, коли ці застряглі сеанси насильно видаляються (на стороні БД) та 1), коли всі відповідні плани виконання очищаються вручну (для запитів) або 2) при зміні UDF (для функцій). Будь-які нові плани, створені SQL-сервером з цього моменту, працюють просто ідеально протягом усього дня, поки вранці не виникне та сама проблема. Крім того, така поведінка не на 100% послідовна, ми насправді не бачимо її щоранку. Але були періоди часу, коли ми спостерігаємо це послідовно 4-5 днів поспіль.
Проблема трапляється вранці, тому, коли користувачі інтерфейсу / веб-сторінки доступні більш інтенсивно, схоже.
Хтось має підказку, що це викликає, і як вирішити цю проблему? Будь-яка допомога буде дуже вдячна.