Поделиться через


Проектирование секций для повышения производительности запросов

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

Секционирование для запросов на соединение

При частом выполнении запросов на эквивалентное соединение двух и более секционированных таблиц, их секционированные столбцы должны совпадать со столбцами, по которым производится соединение. Дополнительно: таблицы или их индексы должны быть упорядочены. Это означает, что в них используется либо общая именованная функция секционирования, либо разные, но дающие одинаковый результат. То есть:

  • Указанные таблицы секционированы по одинаковому количеству параметров, имеющих одинаковый тип данных.

  • В указанных таблицах имеется одинаковое количество секций.

  • В указанных таблицах секции имеют одинаковые граничные значения.

При выполнении указанных условий оптимизатор запросов SQL Server проводит операцию соединения гораздо быстрее, так как в этом случае могут быть соединены сами секции. Если запрос проводит соединение двух неупорядоченных таблиц, либо таблиц, не секционированных для соединения, наличие секционирования в таблице может замедлить выполнение запроса вместо его ускорения.

Преимущество при работе с несколькими жесткими дисками

Для повышения производительности операций ввода-вывода может понадобиться объединить секции в файловые группы, размещенные на разных физических дисках. В процессе сортировки данных для операций ввода-вывода в SQL Server сначала проводится сортировка данных по секциям. При такой схеме работы SQL Server может осуществлять одновременный доступ только к одному диску, что может привести к снижению производительности. Для повышения производительности рекомендуется распределить файлы данных разных секций по нескольким жестким дискам, установив при этом RAID. Таким образом, несмотря на сортировку данных по секциям, SQL Server сможет одновременно осуществлять доступ ко всем жестким дискам каждой секции. Данная конфигурация может быть применена как к секциям внутри одной файловой группы, так и к секциям, размещенным в нескольких файловых группах. Дополнительные сведения о работе SQL Server с разными уровнями RAID см. разделе Уровни RAID и SQL Server.

Управление укрупнением блокировок

Производительность секционированных таблиц можно повысить, применяя укрупнение блокировок к отдельным секциям, а не к таблице целиком. Чтобы снизить конфликт блокировок с помощью применения укрупнения блокировок к секциям, воспользуйтесь параметром LOCK_ESCALATION инструкции ALTER TABLE.