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

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

Помогите, пожалуйста, с секционированием.

Ситуация кратко: таблица порядка 1 млрд записей, секционирование сделано по дате в разбивке по месяцам. Все лежит на одном диске. После секционирования стало работать медленнее 860 ms против 160 ms. Среда тестовая, но с возможностью запускать тест под нагрузкой. Обновление статистики делала. С Fullscan тоже делала.

Где я думаю я сильно облажалась - кластерные индекс поле секционирования в нем идет не первым. Сделала отдельный индекс, где поле Дата идет первым - серверу он не нравится, приписала WITH Index - результаты по скорости те же 860 ms.

Подробнее:
Сделала секционирование по дате по месяцам.
Теоретически данные нужны только за год, остальное будет удаляться то есть нужно 13 секций, но сначала решили посмотреть и потестировать как оно будет и я не делала sliding windows scenario. Сделала 100 секций - на 10 лет.
На рабочем буду делать новую секционированную таблицу и в нее заливать данные.
На тестовом просто удалила все индексы на текущей таблице и пересоздала их со схемой секционирования. Для кластерного ключа сделала одни файловые группы, для остальных другие - надеюсь что все же дадут еще хотя бы парочку дисков, но сначала мне надо показать, что время выполнения хорошее. А оно ужасное.
Поле даты используется в WHERE в запросах.
Было много тестов в разных вариантов, но основное - все поменяла. секционировала - запустила тест. После того как он отработал запустила UPDATA STATISTICS [таблица] with FULLSCAN
Ничего. Как об стену горохом.

Посоветуйте что-нибудь.

Что я еще пробовала:
добавление MAXDOP к запросу
делала фильтрованный индекс - так как по тому конкретному (их всего 2) запросу который сильно замедлился записей в этой таблице немного - меньше 1% - да я могу сделать для него indexed view но я не понимаю почему он медленнее по сравнению с несекционированной таблицей. Ну не логично же это?!

Что еще может помочь - после секционирования объем базы вырос. Делала shrink ничего не меняется. Так как база большая опцию WiTH Reorg как то страшно включать - не знаю сколько времени займет.

Есть ли смысле просто убить таблицу и создать новую и залить туда данные? - может у меня все плохо потому что я старую секционировала.
Данные правда разбились по секциям - это я проверяла.

Простите за огромный пост, надеюсь кто-нибудь доберется до конца. За это отдельное спасибо!
21 апр 16, 16:19    [19089386]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
TaPaK
Member

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

наверное правильнее судить по плану вашего медленного запроса
21 апр 16, 16:23    [19089414]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
Добрый Э - Эх
Guest
Nimua,

Начавший тормозить запрос в where использует условия по полю секционирования? Если да, то как именно выглядят эти условия? Если нет , то какого профита вы ожидали от секционирования?
21 апр 16, 16:57    [19089635]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
Первое с чего нужно начать - отставить панику. Второе - это прикрепить актуальный план выполнения в формате sqlplan. Предоставить версию Вашего сервера, запрос и DDL таблиц, которые участвую в запросе.
21 апр 16, 16:58    [19089653]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4846
Nimua
После секционирования стало работать медленнее 860 ms против 160 ms.


Стало работать медленнее что?

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

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

Да использует, выборка должна затрагивать не более 1-2х партиций (ну и по плану также затрагивает).

Сейчас приложу планы.
21 апр 16, 18:02    [19090033]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
aleks2
Guest
Nimua
Добрый Э - Эх,

Да использует, выборка должна затрагивать не более 1-2х партиций (ну и по плану также затрагивает).

Сейчас приложу планы.

Ну скажите же страдалице страшную правду: выборка быстрее не будет.
В любом случае.
21 апр 16, 19:50    [19090452]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
iljy
Member

Откуда:
Сообщений: 8711
aleks2
Ну скажите же страдалице страшную правду: выборка быстрее не будет.
В любом случае.


Не, ну почему - будет, если работаем с несколькими секциями, которые лежат на разных дисках. А так-то да: какая разница, на сколько секций его разбить, если все равно для запроса надо 50 страниц прочитать с одного носителя?


Nimua, секции - это не волшебная палочка, это просто инструмент, позволяющий более гибко управлять большими объемами данных, а именно - раздробить большие объемы на мелкие и возиться с каждым отдельно. А эффективность работы с ними после этого зависит от очень многих факторов.
21 апр 16, 20:03    [19090492]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
iljy
aleks2
Ну скажите же страдалице страшную правду: выборка быстрее не будет.
В любом случае.


Не, ну почему - будет, если работаем с несколькими секциями, которые лежат на разных дисках. А так-то да: какая разница, на сколько секций его разбить, если все равно для запроса надо 50 страниц прочитать с одного носителя?


Nimua, секции - это не волшебная палочка, это просто инструмент, позволяющий более гибко управлять большими объемами данных, а именно - раздробить большие объемы на мелкие и возиться с каждым отдельно. А эффективность работы с ними после этого зависит от очень многих факторов.


Так а если на монолитной таблице оптимизатор посчитает что надо делать скан, а на секционированной мы ограничимся скажем сканом 1 секции из 5.
21 апр 16, 20:49    [19090613]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
iljy
Member

Откуда:
Сообщений: 8711
Мистер Хенки
Так а если на монолитной таблице оптимизатор посчитает что надо делать скан, а на секционированной мы ограничимся скажем сканом 1 секции из 5.


А если мы индекс правильный покрывающий сделаем, то можем вообще Seek обойтись, и что? К чему утверждение-то? У ТС, насколько я понимаю, вся таблица и так никогда не сканировалась.
21 апр 16, 20:56    [19090629]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
Мистер Хенки
Member

Откуда: канализация
Сообщений: 6615
iljy
Мистер Хенки
Так а если на монолитной таблице оптимизатор посчитает что надо делать скан, а на секционированной мы ограничимся скажем сканом 1 секции из 5.


А если мы индекс правильный покрывающий сделаем, то можем вообще Seek обойтись, и что? К чему утверждение-то? У ТС, насколько я понимаю, вся таблица и так никогда не сканировалась.

так ведь seek не всегда хорош. Если надо существенную часть таблицы вытянуть . и вот тут если сканировать монолитную таблицу это одно, а если по условию одну две секции секционированной - это другое
21 апр 16, 21:37    [19090742]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
iljy
Member

Откуда:
Сообщений: 8711
Мистер Хенки
так ведь seek не всегда хорош. Если надо существенную часть таблицы вытянуть . и вот тут если сканировать монолитную таблицу это одно, а если по условию одну две секции секционированной - это другое

Так seek не обязан по одной записи доставать, он тоже может существенную часть таблицы вытянуть, если нормальные условия на левые поля индекса идут. И быстрее это сделает, чем скан секций по 100млн записей. Вообще спор какой-то беспредметный получается, я же не сказал, что секционирование вообще никакой оптимизации никогда не даст, просто я сильно сомневаюсь, что у ТС была проблема из-за сканирования миллиардной таблицы, ибо такие проблемы лечатся только целебным эфтаназепамом. Проектировщику ;)
21 апр 16, 21:44    [19090755]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31912
Мистер Хенки
так ведь seek не всегда хорош. Если надо существенную часть таблицы вытянуть . и вот тут если сканировать монолитную таблицу это одно, а если по условию одну две секции секционированной - это другое
У ТС ведь seek делается по диапазону записей (иначе и секционирование применить будет невозможно).
А в этом случае он эффективен для любого объёма, хоть для 9/10 таблицы.
21 апр 16, 22:14    [19090837]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
Crimean
Member

Откуда:
Сообщений: 13147
а вы тесты под профайлером делали? откуда "дровишки" - информация о том что стало хуже? если под профайлером - вы четко увидите и лучше / хуже и за счет чего. а дальше, как уже говорили, планы и вперед. ничего особо военного нет в секционировании
21 апр 16, 22:45    [19090910]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
Nimua
Member

Откуда: Ростов-на-Дону
Сообщений: 344
Вот схема партиционирования

К сообщению приложен файл (CreatePartitionScheme.sql - 13Kb) cкачать
22 апр 16, 11:24    [19092460]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
Nimua
Member

Откуда: Ростов-на-Дону
Сообщений: 344
Функция партиционирования

К сообщению приложен файл (CreatePartitionFunction.sql - 8Kb) cкачать
22 апр 16, 11:24    [19092468]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
Nimua
Member

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

Есть готовые нагрузочные тесты, которые имитируют нагрузку на рабочем сервере. И судя по результатам время замедлилось.

Как это выглядит в профайлере - есть куча запросов с нормальным временем. А некоторая часть - меньшая - с ужасным.
По плану - иногда почему то используется неэффективный план, в котором он показывается, что делается scan всех секций - то есть порядка 100 сканов.

К вопросу о тому что секционирование не волшебная палочка. Это я понимаю, вопрос в том, что для того чтобы дали несколько диском мне нужно продемонстрировать какой-то результат, который в данный момент скорее отрицательный. Почему то то, что будет работать быстрее если дисков будет несколько не является очевидным.
22 апр 16, 11:30    [19092523]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
А плана выполнения и запроса как не было так и нет :(
22 апр 16, 11:31    [19092527]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
Nimua,
автор
По плану - иногда почему то используется неэффективный план, в котором он показывается, что делается scan всех секций - то есть порядка 100 сканов.

если лезет в левые секции - можно ставит OPTION (RECOMPILE) но это так себе панацея. План то плохой/нормальный покажете:)
22 апр 16, 11:34    [19092553]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
Не поленился еще раз перечитал и наблюдая такую картинку. Народ (включая меня) говорит что нужно предоставить, чтобы получить нормальный ответ и помочь в итоге. И ноль по фазе в ответ. Уж без обид. Какое-то нагрузочное тестирование. Функции секционирование и тд. У меня на работе примерно такая же байда... Ноют что сервер умирает, но доступа не дают к нему. Мол догадайся сам что с ним не так.
22 апр 16, 11:46    [19092637]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
Nimua
Member

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

Про доступ, сочувствую, у меня тоже самое, видимо буду развивать телепатию.

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

То что есть пока на данный момент. Партиционированные таблицы в красном квадрате.

К сообщению приложен файл. Размер - 125Kb
22 апр 16, 14:09    [19093676]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
Nimua
Member

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


К сообщению приложен файл. Размер - 122Kb
22 апр 16, 14:09    [19093679]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
Nimua
Member

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

К сообщению приложен файл. Размер - 149Kb
22 апр 16, 14:10    [19093683]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
Nimua
Member

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


К сообщению приложен файл. Размер - 116Kb
22 апр 16, 14:10    [19093685]     Ответить | Цитировать Сообщить модератору
 Re: Секционирование и грабли. После секционирования работает в 5 раз медленнее  [new]
Nimua
Member

Откуда: Ростов-на-Дону
Сообщений: 344
На данный момент вопросы:

1. Есть ли смысл убить таблицу и загрузить в нее данные и может ли замедление быть связано с тем, что данные может как то не очень рационально расползлись по диску при создании Clustered Index со схемой секционирования?

2. Что нужно чтобы было понятно в чем проблема? план до секционирования, план после секционирования хороший и плохой вариант?
какие то может быть еще детали.
важно ли когда я формирую\сохраняю план - с нагрузкой или без?
22 апр 16, 14:13    [19093706]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3 4   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить