Ответ 1
Я много лет использовал SQL Server на проектах С# больших и малых, но в прошлом году использовал большинство MySQL за различные проекты С# (но связанные с открытым исходным кодом и связанные с запуском), которые уже использовали MySQL.
Я пропустил SQL Server! По моему опыту, SQL Server лучше во многом:
- Оптимизатор запросов в SQL Server более умный, что означает, что вы часто можете создавать запросы, и они будут создавать оптимальные планы запросов. С MySQL я нахожу, что трачу больше времени на настройку вручную даже относительно простых запросов, чтобы создавать хорошие планы запросов.
- базовый движок базы данных в SQL Server может выполнять более разнообразные функции для повышения производительности. например, все соединения в MySQL связаны с объединением вложенных циклов, в то время как SQL Server может использовать Hash Joins или Merge Joins, что иногда повышает производительность запросов 10x+. SQL Server также может распараллелить запросы, которые особенно важны для больших рабочих нагрузок хранилища данных, что может значительно повысить производительность.
- Инструменты GUI находятся далеко впереди. Оптимизатор запросов графического плана SQL Server упрощает оптимизацию запросов - вы никогда не захотите вернуться к EXPLAIN EXTENDED. Инструменты графического мониторинга SQL Server 2008 намного проще, чем копание в медленном журнале запросов, чтобы выяснить, что происходит. И так далее.
- Как вы уже упоминали, история интеграции .NET(С#, Linq, Entity Framework и т.д.) в SQL Server лучше. Я также использую С#, Entity Framework и LINQ с MySQL, так что это не одно или тоже, хотя производительность, вероятно, будет лучше с SQL Server в среде .NET, потому что команды работают вместе, чтобы повысить производительность и улучшить интеграцию.
- Поддержка SQL-языков SQL Server богаче, чем MySQL, включая некоторые очень интересные функции (особенно в SQL 2008), например
ROW_NUMBER()
,GROUPING_SETS
,OPTIMIZE FOR
, вычисленные столбцы и т.д. - Резервное копирование во много раз быстрее, особенно в SQL 2008 с сжатыми резервными копиями
- Там нет облака приобретения Oracle, зависящего от будущего SQL Server.
- SQL Server (особенно дорогие выпуски) поставляются с другими продуктами, такими как хранилище данных OLAP (SSAS), решение для отчетности (SSRS), инструмент ETL (SSIS), планировщик (агент SQL) и т.д. Вы можете (например, Pentaho, BIRT и т.д.), но интеграция имеет тенденцию быть лучше с SQL Server.
Тем не менее, существуют существенные недостатки, которые могут быть или не могут быть для вас:
- вы застряли, используя Windows Servers, со всеми плюсами и минусами это влечет за собой
- SQL Server, особенно выпуски более высокого класса, дорогой! Для небольшой БД (например, 4 ГБ) SQL Server Express является бесплатным и почти такой же полнофункциональный, как и обычный SQL Server - если вы знаете, что ваши данные будут небольшими, и вы знаете, что ваш босс - это cheapskate, Express - это путь. Кроме того, есть новый веб-выпуск SQL Server 2008, который для интернет-приложений, ориентированных на Интернет, должен теоретически предлагать дешевый хостинг, поскольку стоимость хостера составляет всего 15 долл./Месяц на процессор.
- Это не открытый источник. Некоторые компании и команды разработчиков очень увлечены этим, по уважительным причинам (отладка, стоимость, философия и т.д.)!
- связанный с выше: если вы хотите получить исправленную в MySQL ошибку, и у вас есть навыки, вы можете исправить ее самостоятельно. С SQL Server возникают болезненные ошибки в обработке запросов, оптимизации и т.д., Которые сохраняются в течение многих лет. Я потратил абсурдное количество времени на работу над некоторыми из них.
- для очень простых, только для чтения (или не транзакционных) рабочих нагрузок (например, кэш-доступ на основе БД из веб-приложения), где вы можете избежать использования MyISAM вместо InnoDB, я слышал, что MySQL может быть значительно быстрее.
Предостережение. Я слышал, что MySQL 6.0 должен решить многие из недостатков и различий выше, но я, по-моему, не смог справиться с тем, как Oracle и т.д. повлияет на расписание и/или набор функций.
re: ваш "С# встроен" Примечание: да, вы можете создавать хранимые процедуры, функции, агрегаты и т.д. с использованием языков .NET, но IMHO в большинстве сценариев - это больше проблем, чем стоит, в том числе из-за развертывания сложнее, а администраторы баз данных менее удобны с кодом .NET на своих серверах. Настоящая победа для комбинации С# +.NET + Visual Studio + SQL Server, IMHO, заключается в том, что они были разработаны параллельно в течение последних 10 лет, чтобы все работали хорошо вместе, так что вы получите простоту использования и синергии, которые вы может не использовать MySQL. Тем не менее, как я уже отмечал выше, это не развязка сделки или сделка-посредник... она просто более плавная с использованием SQL Server с остальной частью стека Microsoft.
Вкратце, позвольте мне пояснить, что для многих рабочих нагрузок DB MySQL достаточно хорош - он работает, он стабилен, быстро, имеет достаточно хорошие инструменты и т.д. И это доступно!:-) Я бы никогда не отказался от проекта просто потому, что они используют MySQL. Но сравнение похоже на вождение Honda против BMW... Honda доставит вас туда, куда вы хотите отправиться, но если ваш кошелек может взять его, вам понравится больше ездить с Bimmer.: -)