Ik gebruik SQL Server al vele jaren voor grote en kleine C#-projecten, maar gebruik het laatste jaar voornamelijk MySQL voor verschillende C#-projecten (maar open-source- en opstartgerelateerde) projecten die al MySQL gebruikten.
Ik mis SQL Server! In mijn ervaring is SQL Server in veel opzichten beter:
- de query-optimizer in SQL Server is slimmer, wat betekent dat u vaak query's kunt bouwen en optimale queryplannen kunt produceren. Met MySQL merk ik dat ik meer tijd besteed aan het handmatig afstemmen van zelfs relatief eenvoudige zoekopdrachten om goede zoekplannen te maken.
- de onderliggende database-engine in SQL Server kan een grotere verscheidenheid aan dingen doen om de prestaties te verbeteren. alle joins in MySQL zijn bijvoorbeeld geneste lus-joins, terwijl SQL Server hash-joins of merge-joins kan doen, wat de queryprestaties soms 10x+ kan verbeteren. SQL Server kan ook query's parallelliseren die, vooral voor grote datawarehouse-workloads, de prestaties drastisch kunnen verbeteren.
- de GUI-tools zijn mijlenver vooruit. De query-optimalisatie voor het grafische plan van SQL Server maakt query-optimalisatie een fluitje van een cent - u wilt nooit meer terug naar EXPLAIN EXTENDED. De grafische bewakingstools van SQL Server 2008 zijn zoveel eenvoudiger dan het langzame querylogboek doorzoeken om erachter te komen wat er mis gaat. En zo verder.
- Zoals je al zei, is het .NET-integratieverhaal (C#, Linq, Entity Framework, etc.) in SQL Server beter. Ik gebruik C#, Entity Framework en LINQ ook met MySQL, dus het is niet of-of, hoewel de prestaties waarschijnlijk beter zullen zijn met SQL Server in een .NET-omgeving omdat de teams samenwerken om de prestaties te verbeteren en de integratie beter te laten werken .
- De SQL-taalondersteuning van SQL Server is rijker dan die van MySQL, inclusief een aantal zeer coole functies (vooral in SQL 2008) zoals
ROW_NUMBER()
,GROUPING_SETS
,OPTIMIZE FOR
, berekende kolommen , enz. - Back-up is vele malen sneller, vooral in SQL 2008 met gecomprimeerde back-ups
- Er hangt geen Oracle-acquisitiecloud boven de toekomst van SQL Server.
- SQL Server (vooral de dure edities) wordt geleverd met andere goodies, zoals een OLAP-datawarehouse (SSAS), een rapportageoplossing (SSRS), een ETL-tool (SSIS), een planner (SQL-agent), enz. U kunt krijg gratis vergelijkbare open-source tools (bijv. Pentaho , BIRT , etc.) maar integratie is meestal beter met SQL Server.
Dat gezegd hebbende, zijn er aanzienlijke nadelen, die al dan niet dealbreakers voor u kunnen zijn:
- je zit vast met het gebruik van Windows Servers, met alle plussen en minnen die dit met zich meebrengt
- SQL Server, vooral de duurdere edities, zijn duur ! Voor kleine DB's (<4 GB denk ik), is SQL Server Express echter gratis en bijna net zo volledig uitgerust als de gewone SQL Server - als je weet dat je gegevens klein zullen zijn en je weet dat je baas een goedkope schaatser is , Express is de juiste keuze. Er is ook een nieuwe SQL Server 2008 Web Edition die, voor internetgerichte web-apps, in theorie goedkope hosting zou moeten bieden, aangezien de kosten voor een hoster slechts $ 15 per maand per processor zijn.
- Het is geen open source. Sommige bedrijven en ontwikkelingsteams zijn hier zeer gepassioneerd over, om goede redenen (debuggen, kosten, filosofie, enz.) !
- gerelateerd aan hierboven:als je een bug in MySQL wilt laten repareren en je hebt de vaardigheden, dan kun je deze zelf oplossen. Met SQL Server zijn er pijnlijke fouten in de verwerking, optimalisatie, enz. van query's die jarenlang aanhouden -- ik heb een absurde hoeveelheid tijd besteed aan het omzeilen van een aantal daarvan.
- voor zeer eenvoudige, alleen-lezen (of niet-transactionele) workloads (bijvoorbeeld een DB-gebaseerde cachetoegang vanuit een web-app) waar je weg kunt komen met het gebruik van MyISAM in plaats van InnoDB, hoor ik dat MySQL aanzienlijk sneller kan zijn .
Waarschuwing:ik hoor dat MySQL 6.0 geacht wordt veel van de bovenstaande hiaten en verschillen aan te pakken, maar ik heb mezelf weliswaar niet op de hoogte gehouden van hoe het Oracle-ding, enz. het schema en/of de functieset zal beïnvloeden.
re:uw "C# is ingebouwd" opmerking:ja, u kunt opgeslagen procedures, functies, aggregaten, enz. ontwikkelen met behulp van .NET-talen, maar IMHO in de meeste scenario's is dit meer moeite dan het waard is, ook omdat implementatie moeilijker en DBA's zijn minder comfortabel met .NET-code op hun servers. De echte winst voor een combinatie van C# + .NET + Visual Studio + SQL Server, IMHO, is dat ze de afgelopen 10 jaar parallel zijn ontworpen om allemaal goed samen te werken, zodat u gebruiksgemak en synergie krijgt die u krijgt mogelijk geen gebruik van MySQL. Dat gezegd hebbende, zoals ik hierboven opmerkte, is dit geen deal-breaker of deal-maker ... het is gewoon soepeler om SQL Server te gebruiken met de rest van de Microsoft-stack.
Samenvattend, laat me duidelijk zijn dat MySQL voor veel DB-workloads goed genoeg is - het werkt, het is stabiel, het is snel, het heeft redelijk goede tools, enz. En het is betaalbaar! :-) Ik zou nooit een project weigeren simpelweg omdat ze MySQL gebruiken. Maar de vergelijking is als het besturen van een Honda versus een BMW... de Honda brengt je waar je heen wilt, maar als je portemonnee het aankan, zul je veel meer genieten van de rit met de Bimmer. :-)