Използвах SQL Server в продължение на много години за големи и малки проекти на C#, но през последната година използвах предимно MySQL за различни C# (но свързани с отворен код и свързани с стартиране) проекти, които вече използваха MySQL.
Липсва ми SQL Server! Според моя опит SQL Server е по-добър в много отношения:
- оптимизаторът на заявки в SQL Server е по-интелигентен, което означава, че често можете да създавате заявки и те ще произвеждат оптимални планове за заявки. С MySQL прекарвам повече време в ръчна настройка дори на сравнително прости заявки, за да създам добри планове за заявки.
- основната база данни в SQL Server може да прави по-голямо разнообразие от неща за повишаване на производителността. например, всички обединявания в MySQL са присъединявания на вложен цикъл, докато SQL Server може да прави хеш присъединяване или обединяване с обединяване, което понякога може да повиши производителността на заявката 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 с компресирани архиви
- Няма облак за придобиване на Oracle, надвиснал над бъдещето на SQL Server.
- SQL Server (особено скъпите издания) идват с други екстри, като OLAP склад за данни (SSAS), решение за отчитане (SSRS), ETL инструмент (SSIS), планировчик (SQL Agent) и т.н. Можете вземете подобни инструменти с отворен код безплатно (напр. Pentaho , BIRT и т.н.), но интеграцията обикновено е по-добра със SQL Server.
Въпреки това има значителни недостатъци, които може или не могат да ви нарушат сделката:
- затънали сте да използвате Windows сървъри, с всички плюсове и минуси, които това води до това
- SQL Server, особено изданията от по-висок клас, са скъпи ! За малки БД (<4GB според мен) SQL Server Express е безплатен, и е почти толкова пълнофункционален, колкото обикновения SQL Server - ако знаете, че вашите данни ще бъдат малки и знаете, че вашият шеф е евтин , Express е начинът да отидете. Освен това има ново издание на SQL Server 2008 Web Edition, което за уеб приложения, насочени към интернет, теоретично трябва да предлага евтин хостинг, тъй като цената на хостера е само $15/месец на процесор.
- Не е с отворен код. Някои компании и екипи за разработка са много запалени по това, поради основателни причини (отстраняване на грешки, цена, философия и т.н.)!
- свързано с по-горе:ако искате да коригирате грешка в MySQL и имате уменията, можете да я поправите сами. Със SQL Server има болезнени грешки в обработката на заявки, оптимизацията и т.н., които продължават с години – прекарах абсурдно време, заобикаляйки някои от тях.
- за много прости, само за четене (или не-транзакционни) работни натоварвания (напр. базиран на DB достъп до кеша от уеб приложение), където можете да се разминете с използването на MyISAM вместо InnoDB, чувам, че MySQL може да бъде значително по-бърз .
Предупреждение:Чувам, че MySQL 6.0 трябва да се справи с много от пропуските и разликите по-горе, но признавам, че не съм се информирал как нещата с Oracle и т.н. ще повлияят на графика и/или набора от функции.
re:вашата "C# е вградена" бележка:да, можете да разработвате съхранени процедури, функции, агрегати и т.н., използвайки .NET езици, но IMHO в повечето сценарии това е повече проблеми, отколкото си струва, включително защото внедряването е по-трудно и DBA са по-малко удобни с .NET кода на своите сървъри. Истинската печалба за комбинацията C# + .NET + Visual Studio + SQL Server, IMHO, е, че те са проектирани паралелно през последните 10 години, за да работят добре заедно, така че ще получите лекота на използване и синергия, която вие може да не използва MySQL. Въпреки това, както отбелязах по-горе, това не е разрушител на сделка или сделка... просто е по-гладко да използвате SQL Server с останалата част от стека на Microsoft.
В обобщение, позволете ми да поясня, че за много натоварвания на DB MySQL е достатъчно добър - работи, стабилен е, бърз е, има сравнително добри инструменти и т.н. И е достъпен! :-) Никога не бих отказал проект просто защото използват MySQL. Но сравнението е като шофиране на Honda срещу BMW... Honda ви отвежда там, където искате да отидете, но ако портфейлът ви може да го понесе, ще се насладите на пътуването много повече с Bimmer. :-)