2012-06-12 6 views
6

Может ли кто-нибудь объяснить мне, почему существует существенная разница в производительности между MySQL и SQL Server для этого простого оператора select?MySQL vs SQL Server 2008 R2 простой выбор производительности запроса

SELECT email from Users WHERE id=1 

В настоящее время в базе данных имеется только одна таблица с 3 пользователями. Время MySQL составляет в среднем 0,0003, а SQL Server - 0,05. Это нормально, или сервер MSSQL настроен неправильно?

РЕДАКТИРОВАТЬ:
Обе таблицы имеют одинаковую структуру, первичный ключ установлен в id, MySQL, тип двигателя ЬшоВВ.
Я попробовал запрос с WITH(NOLOCK), но результат тот же.

+1

Имеют ли таблицы аналогичную структуру? У обоих есть индекс (PRIMARY KEY) на 'id'? –

+0

Да, структура таблицы такая же, PK установлена ​​на 'id' – matino

+0

Какой тип двигателя вы используете для таблицы MySQL? – Namphibian

ответ

2

Являются ли серверы одинакового уровня мощности? Оборудование тоже имеет значение. И есть ли примерно одинаковое количество людей, обращающихся к дБ одновременно? Используются ли какие-либо другие приложения с использованием одного и того же оборудования (базы данных вообще не должны использовать серверы с другими приложениями).

Лично я бы не стал беспокоиться об этом виде разницы. Если вы хотите увидеть, что работает лучше, добавьте миллионы записей в базу данных, а затем проверьте запросы. База данных в целом все хорошо работает с простыми запросами на крошечных таблицах, даже плохо спроектированными или неправильно настроенными. Чтобы узнать, есть ли у вас проблемы с производительностью, вам нужно протестировать большие объемы данных и много одновременных пользователей на оборудовании, аналогичном тому, которое вы будете иметь в prod.

+0

Проблема заключалась в том, что сервер MySQL выполнялся на локальном хосте и MSSQL на другом хосте, а измеренное время измерения включало сетевую задержку ... Поскольку вы были ближе всего к вашему ответу, я принимаю его, но хотел бы поблагодарить других людей за их вклад:) И да, я сравнивал платформы для нового проекта и сначала пытался с базовым запросом ... – matino

1

Проблема с диагностикой недорогих запросов заключается в том, что фиксированная стоимость может замачивать переменные затраты. Не то, чтобы я был MS-Fanboy, но я больше знаком с MS-SQL, поэтому я буду говорить об этом, в первую очередь.

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

Все это будет полезно, когда запрос занимает много времени, но при анализе одного запроса, похоже, имеет более медленный результат.

0

Существует несколько факторов, которые могут повлиять на этот показатель, но наиболее значимым является, вероятно, способ MySQL caches queries.

При выполнении запроса MySQL кэширует текст запроса и результат. Когда тот же запрос будет выпущен снова, он просто вернет результат из кеша и фактически не выполнит запрос.

Другим важным фактором является метрика SQL Server - это общее прошедшее время, а не только время, которое требуется для поиска этой записи, или вытащить ее из кеша. В SQL Server, включив SET STATISTICS TIME ON, это сломается немного больше, но вы по-прежнему не очень похожи на подобные.

Наконец, я не уверен, что цель этого бенчмаркинга - это слишком упрощенный запрос. Вы сравниваете платформы для нового проекта? Каковы ваши критерии отбора?

Смежные вопросы