Главная » Microsoft SQL Server, Базы данных » Стратегии производительности транзакций

0

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

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

2.              Используйте эффективный пакетный код, а не болезненно медленные курсоры и циклы.

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

Для идентификации проблем блокировки используйте Activity Monitor или SQL Profiler.

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

?               Выполните оценку и тестирование с использованием уровня изоляции Read Commited Snapshot. В зависимости от способа обработки ошибок и мощности оборудования этот уровень изоляции может существенно понизить конкуренцию.

?               Проверьте уровень изоляции транзакций и убедитесь, что он не выше требуемого уровня.

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

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

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

?               Форсируйте блокировки страниц с помощью параметра (rowlock), чтобы избежать эскалации блокировок.

Резюме

Транзакция представляет собой логическую единицу работы. Несмотря на то что уровень изоляции, установленный в SQL Server по умолчанию, отлично подходит большинству приложений, существуют некоторые механизмы манипулирования и управления блокировками. Чтобы создать серьезное приложение SQL Server, требуется понимание принципов АСЮ, порядка работы журнала транзакций SQL Server, а также механизма блокировок. Все это отразится на качестве, производительности и надежности базы данных.

В следующей главе мы дополним методы оптимизации стратегией высокой доступности.

Источник: Нильсен, Пол. Microsoft SQL Server 2005. Библия пользователя. : Пер. с англ. — М. : ООО “И.Д. Вильямс”, 2008. — 1232 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии