У нас есть приложение, которое запускает SQL Server 2008 R2 Express на внутренней стороне виртуального сервера Windows 2008 R2, работающего на VMWare ESXi. Пользователи жалуются, что приложение работает очень медленно. Я вижу очень высокий дисковый ввод-вывод, который не имеет для меня смысла.
Задний план:
Какие есть варианты, чтобы разобраться в этом глубже? Есть ли способ увидеть, что SQL-сервер делает изнутри (какие запросы выполняются и т. Д.)? Такое поведение кажется нормальным, а нагрузка слишком велика для хранилища? Мне интересно, правильно ли что-то настроено.
http://msdn.microsoft.com/en-us/library/cc645993(v=sql.105).aspx#Scalability
Espress не будет использовать более 1 ГБ ОЗУ для процесса SQL. Вам нужно купить и установить хотя бы Web или Standard, чтобы использовать более 4 ГБ - они оба поддерживают 64, что больше, чем у вас, поэтому выберите один из них.
Кроме того, быть администратором баз данных - это довольно глубокая тема, но она очень доступна через Technet и файл справки. «Как мне узнать, какие запросы выполняются» - это в значительной степени тема первого дня (как и знание того, какая версия подходит для данной задачи). Профилировщик даже не доступен для Express, так что вы в беде. вы настроены прямо сейчас.
Изучите детали запроса - проверьте запросы, которые имеют высокий физический или логический ввод-вывод, изолируйте их, посмотрите план запроса. Годами я использовал устаревшую версию, например, 2008 R2 ... http://gallery.technet.microsoft.com/scriptcenter/Find-inefficient-query-88f4611f может дать вам начало.
Я хотел бы указать на отсутствие индексов, запускающих сканирование таблицы. Профилировщик и мастера настройки также могут помочь понять, в чем проблема. Если в 2008 R2 уже есть обзор активности в менеджере, то у него есть красивое окно с самыми дорогими запросами.