
Во-первых, я не системный администратор, а просто программист, разочарованный низкой производительностью сервера…
В настоящее время мы используем виртуальную машину (я полагаю, что хост — Win Server 2008) на новом процессоре E5-2650, 24 ГБ ОЗУ, по крайней мере, согласно диалоговому окну «Свойства системы». Я не могу точно сказать, какие ресурсы есть у виртуальной машины SQL, потому что у меня есть доступ только к ней, а не к хосту. Извините, я не очень хорошо разбираюсь в этом. Я также не хочу, чтобы наш текущий системный администратор чувствовал, что я наступаю ему на пятки, задавая кучу вопросов, если в этом нет необходимости. Я просто хочу обосновать необходимость обновления, если это поможет...
Мы используем SQL Server 2008 r2, все наши клиенты работают под управлением Win 7 или RC через терминальный сервер под управлением 2008. Наше приложение использует очень большие объемы данных, особенно если учесть размер нашей организации.
Итак, мой главный вопрос: в настоящее время мы используем Windows Server 2003 r2 sp2, может ли обновление до Server 2008 r2 (или более новой версии) заметно улучшить производительность? Я читал, что из-за своих новых функций он может улучшить производительность в других местах, но я не видел, чтобы кто-то комментировал производительность БД.
Если да, то есть ли какие-либо доказательства, которые я могу использовать в поддержку своего аргумента?
Кроме того, поскольку мы используем SQL 2008 r2, а наши клиенты — Win 7, какие драйверы БД должны быть установлены нашими клиентами? Что должно быть установлено на сервере?
Если мне нужно что-то подробнее рассказать, пожалуйста, напишите комментарий.
решение1
Возможный дубликат: Как вы проводите нагрузочное тестирование и планирование емкости баз данных?
Вам нужно работать с командой системных администраторов, чтобы измерить и определить текущие узкие места. Если с ним трудно взаимодействовать, я сочувствую, и это отстой; вам нужно будет выяснить, как лучше всего с ним работать. Было бы очень хорошей идеей иметь четкое описание проблемы с воспроизводимыми тестовыми случаями, а не «это медленно!» Также используйте Perfmon и SQL Profiler; из того немногого, что вы нам рассказали, проблема может быть в плохих индексах, и тогда она на вас. Как только вы узнаете, что SQL считает медленным, вы можете выяснить, является ли это кодом, макетом БД, медленным вводом-выводом, перегруженным ЦП и т. д.
Как только вы узнаете, в чем заключаются узкие места, вы сможете увидеть, поможет ли Win2k8 R2.
Подсказка: скорее всего, нет.
Дополнительная мысль: почему вы смотрите на R2 2008 года, а не на R2 2012 года?
решение2
Итак, основы:
Если только вы не говорите о 32-битной версии 2003 R2, то различия будут минимальными.
Правило первое для баз данных — жизнь и смерть от IO, и обычные VM совершенно не подходят для интенсивной работы IO. Не потому, что VM отстой, а потому, что настройка VM — это общая настройка. Это как взять стандартную машину напрокат и попытаться поучаствовать в гонке — службы баз данных SQL часто проектируются ВОКРУГ дисковой подсистемы.
Вероятно, у вас совершенно недостаточная дисковая подсистема — попробуйте узнать ее задержку (мс/запрос), если она выше одной цифры, это влияет на производительность запросов. Иногда это нормально (если вы делаете отчетный запрос, вы в основном перегрузите его), но для чего-либо транзакционного.... Я также держу пари, что у вас есть журнал на тех же дисках. Потому что в виртуальной машине у вас нет реального контроля над тем, где хранятся данные.
Операционная система будет иметь значение, но оно будет совсем незначительным по сравнению с этим фактом. Не то чтобы я сейчас запускал что-либо на сервере 2003, и я бы уволил любого администратора, который обновится до 2008 R2 вместо 2012 R2. Но в крупных компаниях могут быть политики, которые этому мешают ;)