Россия, г.Кемерово ул.Весенняя д.21 кв.29, КузГТУ, 2003 |
Лекция 36: Разрешение наиболее распространенных проблем производительности
На протяжении всего этого курса вы узнавали о средствах, которые можете использовать, и параметрах, которые можете регулировать для поиска и разрешения определенных проблем производительности. Например, в предыдущей лекции вы узнали, как выявлять проблемы, связанные с вашими операторами T-SQL и хранимыми процедурами, и как настраивать эти операторы и процедуры для получения оптимальной производительности. Назначение этой лекции – помочь вам легко находить информацию, необходимую для разрешения различных типов проблем производительности. В ней дается обзор связанных с производительностью тем, которые были изложены в других лекциях, даются ссылки на предыдущие лекции, где рассматриваются процедуры производительности, и приводится некоторая дополнительная информация о мониторинге производительности и настройке системы
Мы начнем с краткого описания термина "узкое место". Затем мы рассмотрим, как использовать Microsoft Windows 2000 System Monitor (Performance Monitor в Microsoft Windows NT) и Microsoft SQL Server Enterprise Manager, чтобы определить наличие какой-либо проблемы производительности. Затем мы рассмотрим, как разрешать целый ряд проблем производительности, возникающих на различных уровнях, включая уровень приложений, уровень SQL Server, уровень операционной системы и уровень оборудования. В этой лекции дается обзор правил, используемых для планирования мощности системы (они описаны в "Планирование мощности системы" ), поскольку вы можете использовать их для анализа существующей системы, чтобы определить необходимость в дополнительном оборудовании для повышения производительности. И, наконец, мы рассмотрим несколько параметров конфигурирования SQL Server, описанных в предыдущих лекциях, чтобы вы могли регулировать их для изменения способа работы системы.
К концу этой лекции вы будете готовы к выявлению узких мест, снижающих производительность, и определению их причин. Вы не всегда сможете разрешить проблемы производительности, но большинство из них поддаются разрешению, если у вас есть для этого время и ресурсы.
Что такое узкое место?
Термин "узкое место" (bottleneck) обычно используется при рассмотрении вопросов производительности программного обеспечения и оборудования; он относится к ограничивающему производительность состоянию, вызванному каким-либо компонентом или набором компонентов. Например, подсистема ввода-вывода с недостаточной мощностью может создавать ощутимый эффект узкого места: она может замедлять работу всей системы. (См. раздел "Подсистема ввода-вывода" далее в этой лекции.)
Почти любой компонент, действующий в системе, может потенциально стать причиной узкого места. Узкое место может быть вызвано одним компонентом, таким как отдельный диск, набором компонентов, таким как подсистема ввода-вывода, или сочетанием различных компонентов. Например, предположим, что вы обнаружили узкое место, причиной которого является подсистема ввода-вывода, и разрешаете эту проблему путем добавления дисков для поддержки нужного количества операций ввода-вывода, возникающих в системе (аппаратное решение), путем оптимизации неэффективных запросов для снижения количества операций ввода-вывода (программное решение) или применяя оба метода. Разрешив проблему ввода-вывода, вы можете обнаружить наличие узкого места, связанного, например, с ЦП, что потребует увеличения скорости или количества ЦП.
Выявление проблемы
Чтобы определить наличие проблем в вашей системе, вам нужно сначала выполнить некоторые общие исследования по производительности системы. Например, определите, не сталкиваются ли пользователи с проблемой медленного отклика (время отклика больше ожидаемого), когда они выполняют запросы и модификации базы данных. Это характерный симптом проблемы производительности или узкого места. Например, вы можете обратить внимание, что при выполнении определенного запроса все другие операции, запущенные в данной системе, выполняются медленнее, чем обычно. Поэтому вы постараетесь оптимизировать этот запрос или выполнять его, когда меньшее число пользователей выполняет доступ к системе.
Еще одним способом выявления проблемы является периодическое тестирование и мониторинг системы. Для этого вы можете использовать разнообразные средства, включая Windows 2000 System Monitor и SQL Server Enterprise Manager. В данном разделе вы узнаете, как использовать эти два инструмента для обследования состояния вашей системы. Вы также ознакомитесь с хранимой процедурой sp_who которую можете использовать для мониторинга активных процессов SQL Server.
System Monitor
В состав Windows 2000 System Monitor включены не только счетчики Windows 2000, но также счетчики SQL Server. Эти счетчики следят за характеристиками системы, такими как процент использования ЦП или коэффициент попадания в кэш-память для SQL Server (счетчик Cache hit ratio), которые помогают определять, что происходит с вашей системой. (Информация о конкретных счетчиках производительности приводится на протяжении всей этой лекции.) Вы можете следить за результатами мониторинга в режиме реального времени или можете протоколировать данные в файле и просматривать их позже.
Чтобы использовать System Monitor для мониторинга вашей системы, выполните следующие шаги.
- Щелкните на кнопке Start (Пуск), укажите пункт Programs, укажите Administrative Tools (Администрирование) и затем выберите пункт Performance (Производительность), чтобы появилось окно System Monitor
- Укажите, щелкнув на соответствующей кнопке панели инструментов, в какой форме вы хотите просматривать данные: в виде графика, отчета, гистограммы или в файле журнала (для ранее сохраненных данных). На рис. 36.1 показано графическое окно в System Monitor. Если вы решите просматривать файл журнала, то появится диалоговое окно для выбора файла, который нужно открыть.
- Чтобы добавить какой-либо счетчик для просмотра в окне Performance, щелкните на знаке "плюс" в панели инструментов. Появится диалоговое окно Add Counters (Добавление счетчиков) (рис. 36.2). Щелкните на кнопке выбора Use local computer counters (Использовать счетчики локального компьютера), чтобы просматривать счетчики локальной системы, или щелкните на кнопке выбора Select counters from computer (Выбрать счетчики с компьютера) и выберите из раскрывающегося списка под этой кнопкой выбора имя удаленного компьютера для просмотра счетчиков этого компьютера.
- Выберите объект System Monitor из раскрывающегося списка Performance object (Объект производительности). Эти объекты представляют компоненты системы. Счетчики для выбранного вами объекта появляются затем в окне списка в нижнем левом углу диалогового окна. Если вы хотите просматривать все счетчики для выбранного объекта, щелкните на кнопке выбора All counters (Все счетчики). Если вы хотите следить только за определенными счетчиками, щелкните на кнопке выбора Select counters from list (Выбор счетчиков из списка) и выберите нужные счетчики из списка. Для определенных счетчиков существует несколько экземпляров; эти экземпляры представлены в окне списка в нижнем правом углу диалогового окна. Щелкните на кнопке выбора Select instances from list (Выбор экземпляров из списка), если хотите выбрать для просмотра определенные экземпляры, или щелкните на кнопке выбора All instances (Все экземпляры) для просмотра всех экземпляров.
- Щелкните на кнопке Add (Добавить). Счетчик или счетчики, которые у вас выбраны, будут добавлены в окно System Monitor. (Если выбрано несколько экземпляров какого-либо счетчика, то будут добавлены все выбранные экземпляры.) Затем вы можете продолжить добавление счетчиков. Щелкните на кнопке Close, когда будете готовы вернуться в окно Performance. Теперь вы сможете просматривать данные производительности, получаемые с помощью счетчиков. На рис. 36.3 показано графическое представление результатов, возвращаемых тремя счетчиками: Context Switches/sec (Переключение контекста/сек), Total Server Memory (KB) (Общая память сервера, Кб) и %Processor Time (Процент использования процессора).