MS SQL Server является одной из самых широко используемых систем баз данных. Он вырос от работы с мелкими задачами подразделений до обслуживания самых крупных баз данных в мире. Это уже не просто «база данных», сейчас Microsoft SQL Server – это полноценное архитектурное решение, способное обеспечивать потребности в хранении и работе с данными для любой организации. Его можно использовать для хранения и управления множеством типов данных, включая:
- XML,
- e-mail,
- время/календарь,
- файлы,
- документы,
- геопространственную информацию и т.д.
Для работы с этими данными доступен богатый набор сервисов: поиск, формирование запросов, анализ данных, формирование отчетности, интеграция данных и надежная синхронизация. Разработчики могут создавать приложения, которые будут обращаться к SQL Server с серверов, десктопов или мобильных устройств, используя разнообразные технологии от Microsoft и независимых вендоров.
Широкий спектр версий SQL Server позволяет удовлетворить потребности любой компании. Express, Compact, Workgroup, Standard и Enterprise – каждая версия предоставляет набор функций, предназначенных для решения конкретных задач, при этом обеспечивая одинаковый уровень функциональности, как для разработчиков, так и для конечных пользователей.
Всегда считалось, что SQL Server отменно работает с настройками по умолчанию и при этом никаких проблем с производительностью не возникает. Однако удешевление аппаратных средств и стремительный рост объемов данных изменили ситуацию, и все чаще и чаще производительность страдает. И перед IT встает задача найти эти проблемы, обычно с помощью множества разнообразных инструментов и методов мониторинга. У нас речь пойдет об Enterprise и Standard SQL Server, поскольку это самые популярные версии SQL по всему миру.
Архитектура
Данные о производительности почти каждого компонента SQL Server доступны с помощью специальных счетчиков, которые добавляются к обычным объектам и счетчикам Windows при установке SQL Server. Впрочем, почти всегда мониторинг начинается с ресурсов Windows: CPU, дисковая активность, пропускная способность сети и т.д. (подробности можно прочесть в наших заметках о мониторинге Windows).
Эти ресурсы необходимо мониторить потому, что они являются основными составляющими сервера, и каждый компонент вовлечен в обслуживание запросов пользователей. Производительность этих компонентов напрямую связана с общей производительностью приложений. Следовательно, проблемы в одной или нескольких из этих четырех областей, скорее всего, приведут к жалобам пользователей. SQL Server сильно зависит от производительности CPU, доступной памяти, пропускной способности дисковой подсистемы, в то время как производительность клиента очень зависит от производительности сети. Любой процессор, загруженный 90% времени и больше, приведет к очереди рабочих запросов и вероятнее всего производительность при этом пострадает.
Кроме того, SQL Server может быть очень требовательным к памяти. В случе нехватки физической памяти Windows вынужден активно использовать своп файл, и производительность немедленно падает. Ведь дисковая подсистема обычно является самым медленным компонентом по своей механической природе. И когда SQL Server запрашивает данные с диска, зачастую любые задержки операций ввода/вывода негативно скажутся на общей производительности.
И наконец, даже когда база данных полноценно функционирует, медленная работа сети или большие потери пакетов провоцируют повторную передачу данных -как следствие высокая скорость сервера уже не будет таковой в глазах конечных пользователей.