Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4   вперед  Ctrl      все
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Nimua,

у вас как-то сильно большая разница не в красном квадрате... хоть бы xml с затёртыми именами, а то теперь это гадание по картинке
22 апр 16, 14:34    [19093854]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
Crimean
Member

Откуда:
Сообщений: 13148
ну так все же понятно! в запросе *** вам надо *** заменить на ***. и тогда *** в таблице *** сменится с *** на *** и все!
22 апр 16, 14:37    [19093874]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
А так хорошо пятница начиналась. Эх... Скачайте пожалуйста бесплатную версию:
http://www.sqlsentry.com/products/plan-explorer/sql-server-query-view

В этой туле есть функция анонимизации плана выполнения. Пришлите его. Заранее спасибо.

Я не хочу наезжать, но иногда постановка вопроса как у индусов средней руки коих на SO тысячи "у меня сверх секретный запрос и структура бд. показать его не могу. давайте вы мне по картинке скажите что у меня не так". Просил же sqlplan

По картинке могу сказать, что у Вас памяти не хватает на выполнение запроса из-за чего происходят спилл в темпбд (возможно из-за неверной оценки строк). Что еще... то что видимо оптимизатор не понимает сколько секций нужно просканировать, а значит нужно копать в сторону OPTION (RECOMPILE) как советовали ранее. Но даже это все мелочи жизни. Нужно видеть запрос, чтобы понимать логику его работы и план выполнения, чтобы понимать что не так.

На этом моменте умолкаю. Будет план - будет конструктивная помощь.

Всем хороших выходных :)
22 апр 16, 14:37    [19093881]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
AlanDenton
По картинке могу сказать, что у Вас памяти не хватает на выполнение запроса из-за чего происходят спилл в темпбд (возможно из-за неверной оценки строк).

все глаза сломал... гды вы spool видите...
22 апр 16, 14:53    [19094007]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
TaPaK
все глаза сломал... гды вы spool видите...

Никто про спулл операторы не говорил :)
Я имел ввиду вопросительные знаки над операторами Hash Match - обычно это признак спилов в темпбд (чаще всего из-за неверной оценки строк или признак того что памяти не хватает).
22 апр 16, 14:57    [19094031]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
Nimua
Member

Откуда: Ростов-на-Дону
Сообщений: 344
AlanDenton,

О! спасибо! я не знала, что такая прекрасная штука есть!

База же не у меня секретная, правила такие.

Про то что выше красного квадрата. в нормальном варианте (без партиций) оно себя так не ведет. Я обновляла статистики только секционированных таблиц... Может надо было еще соседних?

К сообщению приложен файл (20160412 bad plan.sqlplan - 89Kb) cкачать
22 апр 16, 15:49    [19094446]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
Nimua
Member

Откуда: Ростов-на-Дону
Сообщений: 344
Хороший план

К сообщению приложен файл (20160412 good plan.sqlplan - 87Kb) cкачать
22 апр 16, 15:50    [19094450]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
Nimua
Member

Откуда: Ростов-на-Дону
Сообщений: 344
План без секционирования. Совсем не понимаю почему получается что так меняется "окружающее" действо. План хороший и текущий сделаны на одних и тех же данных.

К сообщению приложен файл (20160422 without partitions.sqlplan - 34Kb) cкачать
22 апр 16, 15:56    [19094488]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
Nimua
что такая прекрасная штука есть!

Прекрасная или нет - тут можно поспорить. Есть еще вариант который я юзаю.

Относительно планов - спасибо.
22 апр 16, 15:57    [19094504]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Nimua,

причем здесь секции, таблица всегда состоит из секций, хотя бы из одной. После секционирования Вы что-то изменили или не доделали и не признаетесь - что.
22 апр 16, 16:27    [19094748]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
1. Обновите статистику для всех остальных таблиц
2. OPTION(RECOMPILE)
3. В запросе используется функции агрегирования или скарярки из-за анонимности неясно? Если последнее от избавиться от них
4. EXISTS перенести можно в CTE

Опять же... сложно без реального запроса о чем-то говорить. Недооценка кол-ва строк на лицо. Если уж все так сильно секретно скиньте на мыло (есть в профиле на хабре @AlanDenton) посмотрю на выходных.
22 апр 16, 16:28    [19094751]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
aleks2
Guest
AlanDenton
1. Обновите статистику для всех остальных таблиц
2. OPTION(RECOMPILE)
3. В запросе используется функции агрегирования или скарярки из-за анонимности неясно? Если последнее от избавиться от них
4. EXISTS перенести можно в CTE

Опять же... сложно без реального запроса о чем-то говорить. Недооценка кол-ва строк на лицо. Если уж все так сильно секретно скиньте на мыло (есть в профиле на хабре @AlanDenton) посмотрю на выходных.


1. Ну еще можно обновить статистику на соседнем (через дорогу) сервере.
2. И изнасиловать свой сервер особо извращенным образом.
3. Только это не изменит тривиального факта: выборка быстрее не будет.
4. Самое эффективное - переписать запрос тредстартерши. Еще эффективнее - перепроектировать базу и логику.
22 апр 16, 16:52    [19094936]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
aleks2
AlanDenton
1. Обновите статистику для всех остальных таблиц
2. OPTION(RECOMPILE)
3. В запросе используется функции агрегирования или скарярки из-за анонимности неясно? Если последнее от избавиться от них
4. EXISTS перенести можно в CTE

Опять же... сложно без реального запроса о чем-то говорить. Недооценка кол-ва строк на лицо. Если уж все так сильно секретно скиньте на мыло (есть в профиле на хабре @AlanDenton) посмотрю на выходных.


1. Ну еще можно обновить статистику на соседнем (через дорогу) сервере.
2. И изнасиловать свой сервер особо извращенным образом.
3. Только это не изменит тривиального факта: выборка быстрее не будет.
4. Самое эффективное - переписать запрос тредстартерши. Еще эффективнее - перепроектировать базу и логику.

наконец-то пришёл человек который всё порешал. Расходимся
22 апр 16, 17:02    [19095012]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
aleks2
Guest
TaPaK
aleks2
пропущено...


1. Ну еще можно обновить статистику на соседнем (через дорогу) сервере.
2. И изнасиловать свой сервер особо извращенным образом.
3. Только это не изменит тривиального факта: выборка быстрее не будет.
4. Самое эффективное - переписать запрос тредстартерши. Еще эффективнее - перепроектировать базу и логику.

наконец-то пришёл человек который всё порешал. Расходимся


Дарагуля, чтобы "исправлять" надо хотя бы понимать.
Ты ж не можешь объяснить: за счет чего выборка из секционированной таблицы может быть быстрее.

А туда же, советы давать. Так что, вполне можешь расходиться.
22 апр 16, 18:56    [19095505]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
aleks2
TaPaK
пропущено...

наконец-то пришёл человек который всё порешал. Расходимся


Дарагуля, чтобы "исправлять" надо хотя бы понимать.
Ты ж не можешь объяснить: за счет чего выборка из секционированной таблицы может быть быстрее.

А туда же, советы давать. Так что, вполне можешь расходиться.

точно отец пришёл. Рассаживаемся дети и слушаем
22 апр 16, 20:46    [19095860]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
Nimua
Member

Откуда: Ростов-на-Дону
Сообщений: 344
Владислав Колосов,

А можете предположить что? я могу по шагам прислать что делалось. теоретически. Если это поможет.
22 апр 16, 21:01    [19095922]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Nimua
Владислав Колосов,

А можете предположить что? я могу по шагам прислать что делалось. теоретически. Если это поможет.

выложите запрос, пошифруйте его близко к к выложенным планам, можно рассуждать
22 апр 16, 21:03    [19095926]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
aleks2, скажите пожалуйста. Ваши слова относились к автору вопроса или ко мне? Заранее спасибо.
22 апр 16, 21:23    [19096030]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
invm
Member

Откуда: Москва
Сообщений: 9405
aleks2
за счет чего выборка из секционированной таблицы может быть быстрее.
Это очевидно - за счет обращения только к тем секциям, которые затрагиваются запросом.
22 апр 16, 21:42    [19096097]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
iljy
Member

Откуда:
Сообщений: 8711
invm
aleks2
за счет чего выборка из секционированной таблицы может быть быстрее.
Это очевидно - за счет обращения только к тем секциям, которые затрагиваются запросом.


Оно да, вот только обращение идет не к секциям, а к страницам, и если надо считать 20 страниц, то пофиг, в каких секциях они лежат, секции могут ускорить только за счет распараллеливания чтения по разным носителям.

Есть еще случай, когда секции ускоряют: когда идет сканирование таблицы с условием на переменную секционирования. Т.е. предположим, что у нас есть секционирование по дате d1, по месяцам, и единственный кластерный индекс вида (некое поле, d1). Тогда запрос
WHERE d1 between '20160101' and '20160215'
для несекционированной таблицы просканирует все, а для секционированной - только 2 секции: январскую и февральскую. Но я уже высказывался по поводу проектировщиков, которые такое вытворяют.


Итого: поскольку не похоже, что у ТС один из двух перечисленных случаев, то aleks2 таки прав (в своей обычной неподражаемой манере, но тем не менее). Но с другой стороны он ваще мимо, поскольку речь не о том, почему не ускорилась, а о том, почему замедлилась, а этого при секционировании тоже не должно было произойти.
22 апр 16, 22:09    [19096205]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
invm
Member

Откуда: Москва
Сообщений: 9405
iljy
Но я уже высказывался по поводу проектировщиков, которые такое вытворяют.
Например:
create table dbo.t
(
 dt datetime,
 criteria_id int,
 value int,
 primary key clustered (dt, criteria_id) on MyPartitionScheme(criteria_id)
);

Чем это плохо, если надо агрегировать value за диапазон дат либо без учета критериев, либо по некоторым из них?
22 апр 16, 22:30    [19096276]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
iljy
invm
пропущено...
Это очевидно - за счет обращения только к тем секциям, которые затрагиваются запросом.


Оно да, вот только обращение идет не к секциям, а к страницам, и если надо считать 20 страниц, то пофиг, в каких секциях они лежат, секции могут ускорить только за счет распараллеливания чтения по разным носителям.

Есть еще случай, когда секции ускоряют: когда идет сканирование таблицы с условием на переменную секционирования. Т.е. предположим, что у нас есть секционирование по дате d1, по месяцам, и единственный кластерный индекс вида (некое поле, d1). Тогда запрос
WHERE d1 between '20160101' and '20160215'
для несекционированной таблицы просканирует все, а для секционированной - только 2 секции: январскую и февральскую. Но я уже высказывался по поводу проектировщиков, которые такое вытворяют.


Итого: поскольку не похоже, что у ТС один из двух перечисленных случаев, то aleks2 таки прав (в своей обычной неподражаемой манере, но тем не менее). Но с другой стороны он ваще мимо, поскольку речь не о том, почему не ускорилась, а о том, почему замедлилась, а этого при секционировании тоже не должно было произойти.

оптимизатор ну совсем не факт возьмет нужные секциии, поэтому без OPTION(RECOMPILE) часто секционирование и не обходится,
22 апр 16, 22:53    [19096371]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
iljy
Member

Откуда:
Сообщений: 8711
invm,

в огороде бузина, а в Киеве дядька. Я говорю про ситуацию, когда фильтр по полю секционирования, а у вас явно не так (фильтр по диапазону дат, секционирование - по criteria_id). Если агрегировать без учета критериев, то секционирование вам вообще не даст никакого выигрыша, если "по некоторым из них", то может дать, да, если "некоторые" попадают в очень ограниченный набор секций, но гораздо больший выигрыш на таком запросе даст индекс (criteria_id, dt). Или у вас в каждую секцию только одно значение критерия попадает?

Возвращаясь к теме, повторю: вопрос изначально не "почему не ускорило", а "почему замедлило".
22 апр 16, 23:28    [19096481]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
invm
Member

Откуда: Москва
Сообщений: 9405
iljy
но гораздо больший выигрыш на таком запросе даст индекс (criteria_id, dt)
Само-собой. Только вот такой индекс бесполезен для запроса только по диапазону дат. Понятно, что можно сделать "секционирование вручную". Только вот зачем?
Итого нужно два индекса вместо одного секционированного.

iljy
Или у вас в каждую секцию только одно значение критерия попадает?
Да.

iljy
Возвращаясь к теме, повторю: вопрос изначально не "почему не ускорило", а "почему замедлило".
А я не по теме выступаю - я алексу2 разъясняю почему секционирование таки может ускорить запрос :)
22 апр 16, 23:44    [19096516]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
invm
iljy
но гораздо больший выигрыш на таком запросе даст индекс (criteria_id, dt)
Само-собой. Только вот такой индекс бесполезен для запроса только по диапазону дат. Понятно, что можно сделать "секционирование вручную". Только вот зачем?
Итого нужно два индекса вместо одного секционированного.

iljy
Или у вас в каждую секцию только одно значение критерия попадает?
Да.

iljy
Возвращаясь к теме, повторю: вопрос изначально не "почему не ускорило", а "почему замедлило".
А я не по теме выступаю - я алексу2 разъясняю почему секционирование таки может ускорить запрос :)

1.
iljy
Или у вас в каждую секцию только одно значение критерия попадает?Да.
Может вы перенгули палку с ключём секцонирования?
2.
автор
Итого нужно два индекса вместо одного секционированного.
не всё можно решить одним индексом, и вроде если согласовано с остальными операциями почему бы и нет?
3.
автор
я алексу2 разъясняю
он уже всем рассказал как жить :)
23 апр 16, 00:13    [19096582]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3 4   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить