Jag har använt SQL Server i många år på C#-projekt, stora som små, men har använt mest MySQL det senaste året på olika C#-projekt (men öppen källkod- och start-relaterade) projekt som redan använde MySQL.
Jag saknar SQL Server! Enligt min erfarenhet är SQL Server bättre på många sätt:
- frågeoptimeraren i SQL Server är smartare, vilket innebär att du ofta kan skapa frågor och de kommer att producera optimala frågeplaner. Med MySQL tycker jag att jag lägger ner mer tid på att finjustera även relativt enkla frågor för att skapa bra frågeplaner.
- Den underliggande databasmotorn i SQL Server kan göra en större mängd saker för att öka prestanda. till exempel är alla joins i MySQL Nested Loop joins, medan SQL Server kan göra Hash Joins eller Merge Joins som ibland kan öka frågeprestanda 10x+. SQL Server kan också parallellisera frågor som, speciellt för stora datalager-arbetsbelastningar, dramatiskt kan öka prestandan.
- GUI-verktygen ligger mil framåt. SQL Servers grafiska plan frågeoptimerare gör frågeoptimering på ett kick - du kommer aldrig att vilja gå tillbaka till EXPLAIN EXTENDED. SQL Server 2008:s grafiska övervakningsverktyg är så mycket enklare än att gräva igenom den långsamma frågeloggen för att ta reda på vad som går fel. Och så vidare.
- Som du nämnde är .NET-integreringsberättelsen (C#, Linq, Entity Framework, etc.) i SQL Server bättre. Jag använder C#, Entity Framework och LINQ med MySQL också, så det är inte en antingen-eller-grej, även om prestanda sannolikt blir bättre med SQL Server i en .NET-miljö eftersom teamen arbetar tillsammans för att öka prestanda och få integrationen att fungera bättre .
- SQL Servers SQL-språkstöd är rikare än MySQL, inklusive några väldigt coola funktioner (särskilt i SQL 2008) som
ROW_NUMBER()
,GROUPING_SETS
,OPTIMIZE FOR
, beräknade kolumner osv. - Säkerhetskopiering är många gånger snabbare, särskilt i SQL 2008 med komprimerade säkerhetskopior
- Det finns inget Oracle-förvärvmoln som hänger över SQL Servers framtid.
- SQL-server (särskilt de dyra utgåvorna) kommer med andra godsaker, som ett OLAP-datalager (SSAS), en rapporteringslösning (SSRS), ett ETL-verktyg (SSIS), en schemaläggare (SQL-agent), etc. Du kan skaffa liknande verktyg med öppen källkod, gratis (t.ex. Pentaho , BIRT , etc.) men integrationen tenderar att vara bättre med SQL Server.
Som sagt, det finns betydande nackdelar, som kanske eller inte kan vara deal-breakers för dig:
- du har fastnat med att använda Windows-servrar, med alla plus- och minuser detta innebär
- SQL Server, särskilt de avancerade utgåvorna, är dyra ! För små DB:er (<4GB tror jag), är SQL Server Express dock gratis, och är nästan lika fullfjädrad som den vanliga SQL Server-- om du vet att din data kommer att bli liten och du vet att din chef är en billig skate. , Express är vägen att gå. Det finns också en ny SQL Server 2008 Web Edition som, för webbappar som är vända mot internet, teoretiskt sett bör erbjuda billig värd eftersom kostnaden för en värd bara är 15 USD/månad per processor.
- Det är inte öppen källkod. Vissa företag och utvecklingsteam brinner mycket för detta, av goda skäl (felsökning, kostnad, filosofi, etc.) !
- relaterat till ovan:om du vill fixa en bugg i MySQL och du har kunskaperna kan du fixa det själv. Med SQL Server finns det smärtsamma buggar i frågebearbetning, optimering etc. som kvarstår i åratal – jag har tillbringat en absurd tid på att kringgå några av dessa.
- för mycket enkla, skrivskyddade (eller icke-transaktionella) arbetsbelastningar (t.ex. en DB-baserad cache-åtkomst från en webbapp) där du kan komma undan med att använda MyISAM istället för InnoDB, har jag hört att MySQL kan vara betydligt snabbare .
Varning:Jag har hört att MySQL 6.0 är tänkt att åtgärda många av luckorna och skillnaderna ovan, men jag har visserligen inte hållit mig uppdaterad med hur Oracle-grejen etc. kommer att påverka schemat och/eller funktionerna.
re:din "C# är inbyggd"-anteckning:ja, du kan utveckla lagrade procedurer, funktioner, aggregat, etc. med hjälp av .NET-språk, men IMHO i de flesta scenarier är detta mer problem än det är värt, inklusive för att implementeringen är svårare och DBA:er är mindre bekväma med .NET-kod på sina servrar. Den verkliga vinsten för en kombination av C# + .NET + Visual Studio + SQL Server, IMHO, är att de har designats parallellt under de senaste 10 åren för att alla fungera bra tillsammans, så att du får användarvänlighet och synergieffekter som du kanske inte använder MySQL. Som sagt, som jag noterade ovan, är detta inte en deal-breaker eller deal-maker... det är bara smidigare att använda SQL Server med resten av Microsoft-stacken.
Sammanfattningsvis, låt mig vara tydlig att för många DB-arbetsbelastningar är MySQL tillräckligt bra - det fungerar, det är stabilt, det är snabbt, det har ganska bra verktyg, etc. Och det är prisvärt! :-) Jag skulle aldrig tacka nej till ett projekt bara för att de använder MySQL. Men jämförelsen är som att köra en Honda vs en BMW... Hondan tar dig dit du vill, men om din plånbok klarar det kommer du att njuta av åkturen mycket mer med Bimmer. :-)