ПредишенСледващото

В тази статия искам да споделя как да премахнете някои планове със заявки от кеша на процедура. Когато може да възникне такава необходимост? Например, съхранена процедура започва с такъв параметър, което води до образуването на неоптимално план заявка за съхранена процедура. И най-вече, за този конкретен случай е най-добрият план, но по-често тази процедура се използва с доста различни параметри, за които планът вече няма да е оптимално. Естествено, че е необходимо да се работи за такава процедура, като изисква от нея да се гарантира, че подобни инциденти не се повтори, но в момента, в който трябва да се премахне плана за заявка от кеша да се започне нова запомнена процедура доведе до съставянето и формирането на желания план. Разбира се в този случай ние не искаме да влияе на други планове в кеш паметта, така че да не предизвика масов прекомпилиране на запитвания и натоварват излишно.

Първи вариант, можете да промените съхранената процедура по себе си. Такива като откривателя на обекта, за да изберете съхранена процедура да се направи Script Store процедурен -> ALTER да -> New Query прозореца и да изпълни това, което имаме.

Отстраняване от кеша на процедура конкретни планове за заявки, Olonets Сергей

Сценарий на запомнени процедури

Това ще доведе до факта, че следващия път, когато съхранената процедура ще бъде то прекомпилирани. Методът е много прост и бърз, но той има един недостатък: тя води до промяна в областта на системната modify_date sys.objects представителство, въпреки че в действителност всички промени, които сме направили.

Вариант втори, по-сложни, за да направите запитване за Repose sys.dm_exec_cached_plans на системата, за да се получи желания дръжката (или дръжките) под оптималните планове и да ги премахнете от кеша от DBCC FREEPROCCACHE. Например, в моя тест база данни, аз ще направя такова искане и получаване на стойността на plan_handle област.

Подкрепете проекта - споделете линка, благодаря!