Size: a a a

SqlCom.ru - Стиль жизни SQL

2020 October 15

DI

Dmitriy Ivanov in SqlCom.ru - Стиль жизни SQL
Денис Лёвкин
RG - да это Resource Governor.
Цель - тестирование хп при различных вариантах maxdop, например от 0 до указанного.

Менять хинтами в запросах - как-то долго
Держать N баз с указанным MAXDOP - вариант, но тоже так себе.

Жаль что нет флага трассировки. 2528  Disables parallel checking of objects by DBCC CHECKDB - ЕСТЬ же, а вдруг есть и на сессию )
Если это sp, то нет проблем с реализацией логики внутри нее для определения пользователя/сессии + динамика для самого запроса с нужным вам maxdop
источник

Д

Денис Лёвкин... in SqlCom.ru - Стиль жизни SQL
Dmitriy Ivanov
Если это sp, то нет проблем с реализацией логики внутри нее для определения пользователя/сессии + динамика для самого запроса с нужным вам maxdop
Нет динамического sql в хп, просто, есть готовый набор ХП и менять их нельзя/нежелательно, нельзя planguide.
На продакшен MAXDOP переключается по временным интервалам и др условиям. Дело только в предварительном тестировании после модификации хп.
источник

DI

Dmitriy Ivanov in SqlCom.ru - Стиль жизни SQL
Денис Лёвкин
Нет динамического sql в хп, просто, есть готовый набор ХП и менять их нельзя/нежелательно, нельзя planguide.
На продакшен MAXDOP переключается по временным интервалам и др условиям. Дело только в предварительном тестировании после модификации хп.
Можно не менять сами хранимки, а делать новые, получаете код оригинальной процедуры, далее создаёте временную, такую же, но с нужным вам maxdop и запускаете ее. Либо так делаете каждый раз через tempdb например, либо заводите свой клон и настраиваете один раз параметр + динамика.
Чуда не будет - флага нет, вам по-любому придется костылить.
источник

Д

Денис Лёвкин... in SqlCom.ru - Стиль жизни SQL
Лень - двигатель прогресса. Когда-то может быть появится возможность менять MAXDOP и  COST THRESHOLD OF PARALLELISM на сессию.
Пока буду использовать RG, всем спасибо за варианты
источник

D

Dmitry in SqlCom.ru - Стиль жизни SQL
Парни, подскажите как сделать следующее:
Есть выборка с row_number, где в группах должно быть по 10 позиций. Если их меньше 10, то надо взять дефолтные значения. Как написать условие про кол-во? Что почитать?
источник

A

Alex in SqlCom.ru - Стиль жизни SQL
Что значит "дефолтные значения"? дефолтные значения для чего?
источник

D

Dmitry in SqlCom.ru - Стиль жизни SQL
Вот там где SortNumber = 1 надо наполнить до 10
источник

D

Dmitry in SqlCom.ru - Стиль жизни SQL
надо набить данными из Recommendation, где Recommendation.Perion = Period из выборки
источник

D

Dmitry in SqlCom.ru - Стиль жизни SQL
короче из отдельного ;WITH Recommendations (...)
источник

2_

2flower _ in SqlCom.ru - Стиль жизни SQL
а зачем row_number?
источник

D

Dmitry in SqlCom.ru - Стиль жизни SQL
чтоб по 10 было
источник

2_

2flower _ in SqlCom.ru - Стиль жизни SQL
а с lateral не быстрее будет и проще?
источник

D

Dmitry in SqlCom.ru - Стиль жизни SQL
я не знаю)
источник

2_

2flower _ in SqlCom.ru - Стиль жизни SQL
top 10 написать, причем если надо удобно может хвост захватить т.е. вывести всех кто на 10-м месте, участников может быть несколько
источник

T

Timus in SqlCom.ru - Стиль жизни SQL
2flower _
а с lateral не быстрее будет и проще?
а у него ПГ или МС?
источник

D

Dmitry in SqlCom.ru - Стиль жизни SQL
ms
источник

2_

2flower _ in SqlCom.ru - Стиль жизни SQL
Timus
а у него ПГ или МС?
ну apply, чего вы придираетесь
в стандарте описан как lateral, мне еще тяжко перескакивать с разных субд.
источник

D

Dmitry in SqlCom.ru - Стиль жизни SQL
пока с этим бы разобраться, потом можно и углубиться)
источник

DS

Denis Suhotin in SqlCom.ru - Стиль жизни SQL
Dmitry
надо набить данными из Recommendation, где Recommendation.Perion = Period из выборки
Как вариант, организуйте себе список из 10 чисел фиксированный (например with PosList as (select (values (1), (2)...) P(PosNum)), и с ним уже можно придумать, как соединиться.
источник

D

Dmitry in SqlCom.ru - Стиль жизни SQL
Denis Suhotin
Как вариант, организуйте себе список из 10 чисел фиксированный (например with PosList as (select (values (1), (2)...) P(PosNum)), и с ним уже можно придумать, как соединиться.
там надо если меньше 10, то брать первые значения из
;WITH Ratings (PositionId, Period, Rating)
AS
(
SELECT *
FROM [dbo].[TradeRating] tr
)
SELECT TOP(10) *
FROM Ratings
WHERE Ratings.Period=Period
ORDER BY Ratings.Rating DESC
источник