powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Принудительная параметризация базы
12 сообщений из 12, страница 1 из 1
Принудительная параметризация базы
    #39863820
Фотография Megabyte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проводил эксперименты с параметром БД parametrization.
Т.к. нет возможности контролировать все запросы, разработчиков несколько. + есть ПО, генерирующее однотипные запросы(Глобально переделать сейчас нет возможности). В связи с этим кэш захламляется похожими планами.

Суть. Сделал базе parametrization = forced. Ожидал, что для большинства однотипных запросов будет создан единый план.

После изменения вижу, что по одному запросу все равно генерятся планы с разными параметрами.
Пример этого запроса:
Код: sql
1.
2.
3.
DECLARE    @IsRentrak VARCHAR(1) = '0'    SELECT @IsRentrak = CASE WHEN [rCinema_ID] IS NOT NULL THEN '1' ELSE '0' END       FROM [dbo].[Spr_245_11_RXML_Cinema]  WHERE xCinema_ID = '401'    SELECT [{laIsFromRentrak.VISIBLE}] = @IsRentrak
DECLARE    @IsRentrak VARCHAR(1) = '0'    SELECT @IsRentrak = CASE WHEN [rCinema_ID] IS NOT NULL THEN '1' ELSE '0' END       FROM [dbo].[Spr_245_11_RXML_Cinema]  WHERE xCinema_ID = '3590'    SELECT [{laIsFromRentrak.VISIBLE}] = @IsRentrak
DECLARE    @IsRentrak VARCHAR(1) = '0'    SELECT @IsRentrak = CASE WHEN [rCinema_ID] IS NOT NULL THEN '1' ELSE '0' END       FROM [dbo].[Spr_245_11_RXML_Cinema]  WHERE xCinema_ID = '374'    SELECT [{laIsFromRentrak.VISIBLE}] = @IsRentrak


И таких больше 1000.

Точечно я могу все обернуть в хранимку, чтоб был один план. Но хочется понять, почему не сработала принудительная параметризация? Может мне надо что-то еще сделать?
---
Проходя мимо разложенных граблей, ты теряешь драгоценный опыт. (с)
...
Рейтинг: 0 / 0
Принудительная параметризация базы
    #39863837
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Megabyte,

это план выполнения пакета. Запрос начинается с SELECT и заканчивается WHERE xCinema_ID =...
...
Рейтинг: 0 / 0
Принудительная параметризация базы
    #39863859
Фотография Megabyte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав КолосовMegabyte,

это план выполнения пакета. Запрос начинается с SELECT и заканчивается WHERE xCinema_ID =...
Понял. Печаль. Спасибо.
...
Рейтинг: 0 / 0
Принудительная параметризация базы
    #39863862
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Megabyte,

ну почему, вы снизили затраты на время компиляции запросов. У нас, например, клиент генерирует запросы, в которых свыше 100 джойнов может быть и включение принудительной параметризации оказалось единственным приемлемым средством сократить время отклика.
...
Рейтинг: 0 / 0
Принудительная параметризация базы
    #39863864
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Однако, включение принудительного прослушивания имеет рад негативных побочных эффектов. К примеру, сервер перестаёт использовать в плане запроса фильтрованные индексы.
...
Рейтинг: 0 / 0
Принудительная параметризация базы
    #39863973
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Megabyte В связи с этим кэш захламляется похожими планами.

если они одноразовые, то поможет опция "optimize for ad-hoc workloads"
правда излишнюю компиляцию не уберет
...
Рейтинг: 0 / 0
Принудительная параметризация базы
    #39864036
Фотография Megabyte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komradMegabyte В связи с этим кэш захламляется похожими планами.

если они одноразовые, то поможет опция "optimize for ad-hoc workloads"
правда излишнюю компиляцию не уберет
Знаю про эту опцию, но в целом по серверу она не нужна.
...
Рейтинг: 0 / 0
Принудительная параметризация базы
    #39864101
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Megabytekomradпропущено...

если они одноразовые, то поможет опция "optimize for ad-hoc workloads"
правда излишнюю компиляцию не уберет
Знаю про эту опцию, но в целом по серверу она не нужна.

кстати, не вижу вреда от нее и на серверном уровне
или имеются какие-то специфические нагрузки?
...
Рейтинг: 0 / 0
Принудительная параметризация базы
    #39864220
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
komradкстати, не вижу вреда от нее и на серверном уровне
или имеются какие-то специфические нагрузки?Как уже сказали - разборов запросов меньше не станет. Но в качестве оверхеда нам достается библиотечный кэш, битком забитый "чучелами", вместо планов. А их в кэш поместится сильно больше, чем нормальных планов. Разница может отличаться в разы. И вот теперь серверу придется искать разобранный план для вновь пришедшего запроса не среди, скажем, 20к разобранных планов, а среди 20к планов, и 80к "одноразовых заглушек".
...
Рейтинг: 0 / 0
Принудительная параметризация базы
    #39864222
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Megabyteхочется понять, почему не сработала принудительная параметризация? Она сработала, просто не совсем "ровно".
Почитайте вот эту страничку BOL-а с момента "Рекомендации"
...
Рейтинг: 0 / 0
Принудительная параметризация базы
    #39864910
Фотография Megabyte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щукина АннаMegabyteхочется понять, почему не сработала принудительная параметризация? Она сработала, просто не совсем "ровно".
Почитайте вот эту страничку BOL-а с момента "Рекомендации"
Я писал, знаю про эту настройку, но считаю, что в целом для сервера она будет лишней. Однотипные запросы генерятся только в одной из 7 рабочих баз(из них 5 активно используемых), хоть и самой большой и часто используемой.

p.s. У нас есть ПО, которое и генерит однотипные запросы из базы, где в тексте хранятся тексты запросов. Судя по всему, выполняются они просто: exec(@sql). И далеко не все в хранимках.
Сейчас пишется новая версия, уже договорился с разработчиком переделать на параметризированный вызов sp_executesql.
...
Рейтинг: 0 / 0
Принудительная параметризация базы
    #39864913
Фотография Megabyte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щукина АннаMegabyteхочется понять, почему не сработала принудительная параметризация? Она сработала, просто не совсем "ровно".
Почитайте вот эту страничку BOL-а с момента "Рекомендации"
Не сразу внимательно прочитал. :) Про причины появления запросов в курсе и даже отуда ноги растут)
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Принудительная параметризация базы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]