Intereting Posts
Представление результатов SQL в одной строке – в результате с лестничными ступенями Поворот табличной функции При отбрасывании таблицы, которая, по ее словам, не существует, при создании она говорит, что существует в SQL Server 2008R2 Как передать параметры значения таблицы в хранимую процедуру из .net-кода пакетная вставка возвращает поля идентификации беспорядков Ошибка арифметического переполнения, преобразующая ошибку float в sql SQL Server: невозможно создать отношения Найти пространство «табулятор» в текстовом поле на SQL Сложная справка по SQL-запросам Как изменить сохраненную процедуру или код ASP.net, чтобы получить автогенерированный идентификатор после вставки новой строки client.pk_name присоединение транзакций.fk_name vs. customer.pk_id присоединение транзакций.fk_id MySQL REGEXP для SQL Server Как вставить данные в реляционную базу данных Ошибка строки подключения asp.net (база данных находится на стороне сервера) Test Column существует, добавить столбец и обновить столбец

C # – MySQL против Microsoft SQL Server

В течение самого долгого времени я использовал серверы MySQL для обработки данных (в JAVA и на C #). Но в последнее время я хорошо разбираюсь в LINQ и SQL Server. Я думал о преобразовании, но я мало знаю о SQL Server.

Может ли кто-нибудь, кто ранее использовал SQL Server, определить, насколько хорошо он сравнивается с сервером MySQL с точки зрения производительности и удобства использования.

Я также слышал, что SQL Server будет лучше для C #, поскольку он в основном встроен.

Solutions Collecting From Web of "C # – MySQL против Microsoft SQL Server"

Я много лет использовал SQL Server в проектах C # больших и малых, но в основном использовал MySQL в прошлом году на различных проектах C # (но с открытым исходным кодом и связанных с запуском) проектах, которые уже использовали 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 (C #, Linq, Entity Framework и т. Д.) В SQL Server лучше. Я также использую C #, Entity Framework и LINQ с MySQL, так что это не одно или тоже, хотя производительность, вероятно, будет лучше с SQL Server в среде .NET, потому что команды работают вместе, чтобы повысить производительность и улучшить интеграцию ,
  • Поддержка SQL-языков SQL Server богаче, чем MySQL, включая некоторые очень интересные функции (особенно в SQL 2008), такие как ROW_NUMBER() , GROUPING_SETS , OPTIMIZE FOR , вычисленные столбцы и т. Д.
  • Резервное копирование во много раз быстрее, особенно в SQL 2008 с сжатыми резервными копиями
  • На будущее SQL Server нет облака приобретения Oracle.
  • SQL Server (особенно дорогие издания) поставляются с другими продуктами, такими как хранилище данных OLAP (SSAS), решение для отчетности (SSRS), инструмент ETL (SSIS), планировщик (агент SQL) и т. Д. Вы можете получить аналогичные открытые (например, Pentaho , BIRT и т. д.), но интеграция, как правило, лучше работает с SQL Server.

Тем не менее, есть существенные недостатки, которые могут или не могут быть для вас:

  • вы застряли, используя Windows Servers, со всеми плюсами и минусами это влечет за собой
  • SQL Server, особенно выпуски более высокого класса, стоят дорого ! Для небольших БД (<4 Гбайт, я думаю), SQL Server Express является бесплатным, и он почти такой же полнофункциональный, как и обычный SQL Server – если вы знаете, что ваши данные будут небольшими, и вы знаете, что ваш босс – дешевый , Экспресс – это путь. Кроме того, есть новый веб-выпуск SQL Server 2008, который для интернет-приложений, ориентированных на Интернет, должен теоретически предлагать дешевый хостинг, поскольку стоимость хостера составляет всего 15 долларов США в месяц на процессор.
  • Это не с открытым исходным кодом. Некоторые компании и команды разработчиков очень увлечены этим, по уважительным причинам (отладка, стоимость, философия и т. Д.)!
  • связанные с выше: если вы хотите получить исправленную в MySQL ошибку, и у вас есть навыки, вы можете исправить ее самостоятельно. С SQL Server возникают болезненные ошибки в обработке запросов, оптимизации и т. Д., Которые сохраняются в течение многих лет. Я потратил абсурдное количество времени на работу над некоторыми из них.
  • для очень простых, только для чтения (или не транзакционных) рабочих нагрузок (например, кэш-доступ на основе БД из веб-приложения), где вы можете избежать использования MyISAM вместо InnoDB, я слышал, что MySQL может быть значительно быстрее.

Caveat: Я слышал, что MySQL 6.0 должен решить многие из недостатков и различий выше, но я признал, что не довел себя до скорости с тем, как вещь Oracle и т. Д. Повлияет на расписание и / или набор функций.

re: ваш «C # встроен» Примечание: да, вы можете разрабатывать хранимые процедуры, функции, агрегаты и т. д. с использованием языков .NET, но IMHO в большинстве сценариев – это больше проблем, чем это стоит, в том числе потому, что развертывание сложнее и Менеджеры баз данных менее удобны с кодом .NET на своих серверах. Настоящая победа для комбинации C # + .NET + Visual Studio + SQL Server, IMHO, заключается в том, что они были разработаны параллельно в течение последних 10 лет, чтобы все работали хорошо вместе, так что вы получите простоту использования и синергии, которые вы может не использовать MySQL. Тем не менее, как я уже отмечал выше, это не является нарушителем сделки или сделкой-посредником … это просто более плавное использование SQL Server с остальной частью стека Microsoft.

Вкратце, позвольте мне пояснить, что для многих рабочих нагрузок DB MySQL достаточно хорош – он работает, он стабилен, он быстрый, он имеет достаточно хорошие инструменты и т. Д. И это доступно! 🙂 Я бы никогда не отказался от проекта просто потому, что они используют MySQL. Но сравнение похоже на вождение Honda против BMW … Honda доставит вас туда, куда вы хотите отправиться, но если ваш кошелек может взять его, вам понравится больше ездить с Bimmer. 🙂

Я использую оба довольно регулярно, и в настоящее время изучаю мой Sql-сервер MCTS, поэтому я, вероятно, могу добавить несколько полезных комментариев здесь.

SQL Server – это гораздо более полнофункциональная база данных, особенно версия 2008 года. MySQL даже не поддерживает ограничения столбцов (например, создание столбца int, а затем ограничение значения от 1 до 1000 – не может принудительно выполнять это в MySQL). SQL Server предлагает полнотекстовую индексацию, собственные столбцы XML и манипуляции, несколько режимов транзакций, сложные предложения по обеспечению безопасности, репликацию и распределенные функции, а также отличный пакет управления.

Что касается вашего комментария C #, да, SQL Server имеет возможность импортировать объекты CLR, что означает, что вы можете скомпилировать некоторый .Net-код и перенести его в SQL Server и использовать функции базы данных, которые его используют. Это особенно полезно для создания новых агрегатных функций, поскольку вы можете обойти курсоры и использовать более быстрые контуры CLR-кода.

Вы также можете оптимизировать SQL Server до рукояти, вплоть до режимов блокировки и изоляции, которые он использует, и процессор / память, которые может использовать данный поток.

С другой стороны, MySQL свободен и относительно прост в настройке, с достаточным количеством опций, которые большинство владельцев веб-сайтов очень довольны использованием его для своих основных приложений CRUD.

Если вы хотите использовать Linq2Sql, вам нужен SQL Server. Если вам нужны тонны дополнительных функций, SQL Server – это путь к уверенности.

Я работал с обоими, хотя гораздо больше с SqlServer. В большом магазине, особенно в тех случаях, когда из архитектурных решений DB возникают многие архитектурные решения приложений, SQL Server предлагает больше. Репликация, SSIS и т. Д. Но они добавляют много сложности и, по моему опыту, являются источником значительной части операционных отключений.

Но, как хранилище для программного приложения, MySql делает все, что вам нужно, и является простым, надежным, быстрым и простым.

Говоря строго философски, вы действительно хотите, чтобы ваша прикладная логика находилась в коде приложения, а не в сложных определениях SQL и ограничений. Пойдите для основ в вашем хранилище данных и поставьте время, которое вы сохраните в самой программе.

LINQ – это собственный язык и не привязан к конкретной базе данных или даже к базе данных. На самом деле это всего лишь инструмент для манипулирования структурированными коллекциями данных. Основной язык, на котором написана СУБД, не имеет значения с точки зрения того, с какого языка вы его используете.

C # будет обращаться к MySQL и SQLServer в основном идентично с использованием ADO.NET (или LINQ – LINQ to SQL привязан к SQL Server, но у него, похоже, нет большой перспективы), поэтому это не будет фактором мой разум, хотя интеграция IDE могла бы быть.

Преимущества SQL Server будут включать в себя более полную гамму поддержки разработки в SQL Server, агента и планирования, модель безопасности и индексирование, настройку и другие функции, такие как службы Integration Services, службы Reporting Services и Analysis Services, которые делают относительно легким управление больших системных инфраструктур.

Я не думаю, что вы дали достаточно информации о своей системе, чтобы сделать выбор между ними очевидным на данный момент.

С точки зрения разработки (кодирования) я работал как с разработчиком Java, так и с разработчиком C # (подключаясь как к различным проектам, так и к Java-SQLServer, от Java до MySQL, C # к MySQL, C # до SQLServer). Лично я действительно не замечал такой большой разницы, хотя я не делал ничего сложного. Я не думаю, что есть слишком много, чтобы беспокоиться о том, думаешь ли ты, что будет крутая кривая обучения, если вы не захотите проникнуть в какой-то конкретный материал. Есть некоторые незначительные отличия, но ничего, что кто-то быстро не заберет.

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