Академия Специальных Курсов по Компьютерным Технологиям
    Главная страница Послать письмо
 
AskIt.ru  
   
   
   
   
   
   
 
 
  Главная / Заказные курсы / Работа с базами данных для пользователей
 
 

Получить учебные материалы по этому курсу


<-- Назад Читать дальше -->

6.4 Оптимизация запросов

Оптимизация запросов, количество логических чтений, SET STATISTICS IO ON, хинты оптимизатора, OLE DB и ODBC, SET NOCOUNT OFF

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

Главный параметр, который позволяет объективно оценить эффективность выполнения запросов - это количество логический операций чтения (то есть чтение без учета влияния кэша). На SQL Server просмотреть его можно при помощи Query Analyzer:

вначале выполнить команду SET STATISTICS IO ON, а затем выполнить запрос. Для каждой таблицы будет показана информация о просмотренных экстентах, количестве логических, физических и упреждающих чтений. Наша задача - добиться, чтобы логических чтений было как можно меньше. Обычно это можно сделать:

·        изменением системы индексов;

·        использованием Optimizer Hints - когда план, генерируемый модулем Query Optimizer, нас не устраивает;

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

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

·        одна из самых распространенных причин неудовлетворительной производительности - в базе данных находятся лишние архивные данные, которые нужны только для небольшого количества отчетов, но не для текущей работы. Возможно, есть смысл разбить базу данных на  текущую (OLTP) и архивную (Data Warehouse);

·        возможно, используется неоптимальный драйвер для подключения к источнику (например, OLE DB, как правило, работает намного быстрее ODBC);

·        очень большой выигрыш может дать переход с настольного ядра (Access, FoxPro, DBase и т.п.) на клиент-серверную систему (SQL Server, Oracle, IBM DB2), особенно с точки зрения экономии сетевого трафика;

·        при выполнении запросов к SQL Server всегда рекомендуется устанавливать параметр SET NOCOUNT ON - обычно достигается выигрыш порядка 10 процентов;

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

 

   
   
   
   
   
   
   
   
   
   
 
<-- Назад Читать дальше -->

Получить учебные материалы по этому курсу


 

 
© 2004-2008, Академия Специальных Курсов
по Информационным Технологиям
.
Все права защищены.

Разработка NevaStudio
г. Санкт-Петербург, Васильевский остров,
20-я линия, д. 7
Офис 101, 2-й этаж
Телефон: 8(812)922-47-60
E-mail: info@askit.ru