SqlServer Express низкая производительность - PullRequest
0 голосов
/ 12 сентября 2008

Я тестирую веб-приложение .NET. Я сделал это по двум причинам: я хотел посмотреть, какова производительность в реальных условиях, а также убедиться, что мы не пропустили никаких проблем во время тестирования. В приложении было 30 одновременно работающих пользователей, которые использовали его, как и при обычной работе. У большинства пользователей открыто несколько окон приложения.

  • 10 пользователей: неплохо
  • 20 пользователей: замедление
  • 30 пользователей: очень, очень медленно, но без таймаутов

Он был загружен на рабочий сервер. Это виртуальный сервер с процессором Xeon 2,66 Гц и 2 ГБ оперативной памяти. Мы используем Win2K3 SP2. У нас загружены .NET 1.1 и 2.0, и мы используем SQLExpress SP1.

Мы перепроверили индексы на всех послесловиях таблиц, и все они были в порядке.

Как мы можем улучшить производительность нашего приложения?

Ответы [ 6 ]

2 голосов
/ 12 сентября 2008

Я просто подумал об этом, но посмотрите, сколько памяти использует SQL Server, когда у вас более 20 пользователей. Одно из ограничений версии Express в том, что она ограничена 1 ГБ ОЗУ . Так что это может быть просто вопросом нехватки памяти для сервера из-за ограничений Express.

2 голосов
/ 12 сентября 2008
  1. Возможно, у вас возникли проблемы с параллелизмом, в зависимости от того, как работает ваше приложение. Попробуйте выполнить чтение с ключевым словом "nolock".

  2. Попробуйте добавить псевдонимы таблиц для ваших столбцов (и избегайте использования SELECT *), это поможет MSSQL, поскольку не нужно «угадывать», из какой таблицы получены столбцы.

  3. Если вы этого еще не сделали, перейдите к SPROC, это позволит MSSQL лучше индексировать ваши данные для нормального набора результатов данного запроса.

  4. Попробуйте следовать плану выполнения ваших SPROCS, чтобы убедиться, что они используют индексы, которые, по вашему мнению, являются.

  5. Запустите трассировку для вашей базы данных, чтобы увидеть, как выглядят входящие запросы. Вы можете заметить, что определенный SPROC запускается снова и снова: как правило, это хороший знак для кэширования ответов на клиенте, если это возможно. (справочные списки и т. д.)

0 голосов
/ 26 сентября 2008

Запустите SQL Profiler, чтобы просмотреть запросы, отправленные в базу данных. Ищите запросы, которые:

  • возвращает слишком много данных
  • плохо построено
  • выполняется слишком много раз
0 голосов
/ 17 сентября 2008

убедитесь, что вы закрыли соединения после получения данных.

0 голосов
/ 17 сентября 2008

Я бы проверил производительность диска на виртуальном сервере. Если это одна из проблем, я бы порекомендовал поместить базу данных на отдельный шпиндель.

Обновление: перейти к отдельному шпинделю или обновить версию SQL Server, как удачно предлагает Гульзар.

0 голосов
/ 12 сентября 2008

Обновление: похоже, SQL Server Express не является проблемой, поскольку они использовали один и тот же продукт в предыдущей версии приложения. Я думаю, что ваш следующий шаг в выявлении узких мест. Если вы уверены, что он находится на уровне базы данных, я бы порекомендовал выполнить трассировку профилировщика и сократить время выполнения самых дорогих запросов.

Это еще одна ссылка, которую я использую для сбора статистики из представлений динамического управления SQL Server (DMV) и связанных с ними функций динамического управления (DMF). Не уверен, что мы можем использовать в Express Edition. Раскрытие скрытых данных для оптимизации производительности приложения .


Используете ли вы SQL Server Express для веб-приложения? Насколько я знаю, у него есть некоторые ограничения для развертывания производства.

SQL Server Express является бесплатным и может распространяться независимым поставщиком программного обеспечения (при условии согласия). SQL Server Express идеально подходит для изучения и создания настольных и небольших серверных приложений . Это издание - лучший выбор для независимых поставщиков программного обеспечения, непрофессиональных разработчиков и любителей, создающих клиентские приложения. Если вам нужны более продвинутые функции базы данных, SQL Server Express можно легко обновить до более сложных версий SQL Server.

...