Производительность запросов к хранилищу данных SQL Server 2008 - Укрупнение блокировок на уровне секции
ОГЛАВЛЕНИЕ
Укрупнение блокировок на уровне секции
SQL Server поддерживает секционирование по диапазону, позволяющее секционировать данные для простоты управления или группировать данные на основании схемы использования. Так, например, данные продаж можно секционировать по месяцам или кварталам. Можно сопоставить секцию с ее файловой группой, а файловую группу, в свою очередь, с группой файлов. Это дает два преимущества. Во-первых, можно создавать резервные копии и восстанавливать секцию как независимый элемент. Во-вторых, можно сопоставить файловую группу с быстрой или медленной подсистемой ввода-вывода, в зависимости от схемы использования или загрузки запросами.
Интересный момент – схема доступа к данным. Запросы и операции DML могут нуждаться в доступе или манипуляциях только с частью секций. Поэтому если вы, например, анализируете данные продаж за 2004 год, вам требуется доступ только к соответствующим секциям; в идеальном варианте, запросы, обращающиеся к данным в других секциях, не должны оказывать на это никакого влияния (не считая ресурсов системы). В SQL Server 2005 одновременный доступ к различным секциям может привести к блокировке таблицы, которая может затруднить доступ к другим секциям.
Чтобы уменьшить эти помехи, в SQL Server 2008 включен на уровне таблиц параметр, позволяющий контролировать укрупнение блокировок на уровне секции или таблицы. По умолчанию укрупнение блокировок включено на уровне таблиц, как и в SQL Server 2005. Однако, политику укрупнения блокировок для таблицы можно изменить. Например, можно установить такое укрупнение блокировок:
Alter table <mytable> set (LOCK_ESCALATION = AUTO)
Эта команда предписывает SQL Server выбрать подходящую для схемы таблицы гранулярность укрупнения блокировок. Если таблица не секционирована, укрупнение блокировок будет на уровне TABLE (таблицы). Если она секционирована, то гранулярность укрупнения блокировок будет на уровне секции. Этот параметр также используется в SQL Server как способ уменьшить вероятность гранулярности блокировки на уровне таблицы.
Заключение
Мы представили короткий обзор новых функций SQL Server 2008, которые помогут вам достичь большей производительности запросов поддержки решений в реляционных хранилищах данных. Но не забывайте, что, хотя высокая скорость отклика на запросы поддержки решений очень важна, есть и другие принципиальные условия, не описанные в этой статье.
К некоторым дополнительным функциям, имеющим отношение к реляционному хранению данных, относятся:
- Поддержка синтаксиса MERGE в T-SQL для обновления, удаления и добавления (измерения) данных одним утверждением и циклом приема-передачи в базу данных.
- Улучшенное ведение журнала ядра SQL Server, обеспечивающее большую эффективность ETL.
- Наборы группирования, облегчающие создание сборных запросов поддержки принятия решений в T-SQL.
- Сжатие резервных копий, уменьшающее нагрузку на ввод-вывод как полного, так и последовательного резервного копирования.
- Управление ресурсами, позволяющее контролировать распределение системных ресурсов между рабочими нагрузками.
Мы советуем ознакомиться с более полной информацией о всех этих замечательных функциях на странице SQL Server в Интернете, по адресу microsoft.com/sql.
Автор: Sunil Agarwal, Torsten Grabs и Dr. Joachim Hammer
Иcточник: TechNet Magazine
Опубликована - 16.04.2008