sql >> Databáze >  >> RDS >> Mysql

C# - MySQL vs Microsoft SQL Server

SQL Server používám mnoho let na velkých i malých projektech C#, ale poslední rok používám většinou MySQL na různých projektech C# (ale souvisejících s open source a spouštěním), které již MySQL používaly.

Chybí mi SQL Server! Podle mých zkušeností je SQL Server v mnoha ohledech lepší:

  • Optimalizátor dotazů v SQL Server je chytřejší, což znamená, že často můžete vytvářet dotazy a ty vytvoří optimální plány dotazů. S MySQL trávím více času ručním laděním i relativně jednoduchých dotazů, abych vytvořil dobré plány dotazů.
  • Základní databázový stroj v SQL Server může dělat širší škálu věcí pro zvýšení výkonu. například všechna spojení v MySQL jsou spojení Nested Loop, zatímco SQL Server může provádět spojení Hash nebo Merge Joins, což může někdy zvýšit výkon dotazů 10x+. SQL Server může také paralelizovat dotazy, což může zejména u velkých zátěží datových skladů výrazně zvýšit výkon.
  • nástroje GUI jsou míle napřed. Optimalizátor dotazů grafického plánu SQL Serveru dělá optimalizaci dotazů hračkou – nikdy se nebudete chtít vrátit k EXPLAIN EXTENDED. Nástroje pro grafické monitorování SQL Server 2008 jsou mnohem snazší než prohrabávat se protokolem pomalých dotazů, abyste zjistili, co je špatně. A tak dále.
  • Jak jste zmínil, příběh o integraci .NET (C#, Linq, Entity Framework atd.) v SQL Server je lepší. Používám C#, Entity Framework a LINQ také s MySQL, takže to není věc buď-nebo, i když výkon bude pravděpodobně lepší s SQL Serverem v prostředí .NET, protože týmy spolupracují na zvýšení výkonu a lepší integraci. .
  • Podpora jazyka SQL serveru SQL Server je bohatší než podpora MySQL, včetně některých velmi skvělých funkcí (zejména v SQL 2008), jako je ROW_NUMBER() , GROUPING_SETS , OPTIMIZE FOR , počítané sloupce atd.
  • Zálohování je mnohonásobně rychlejší, zvláště v SQL 2008 s komprimovanými zálohami
  • Nad budoucností SQL Serveru nevisí žádný cloud akvizice Oracle.
  • SQL Server (zejména drahé edice) přichází s dalšími vychytávkami, jako je datový sklad OLAP (SSAS), řešení pro vytváření sestav (SSRS), nástroj ETL (SSIS), plánovač (SQL Agent) atd. získat podobné nástroje s otevřeným zdrojovým kódem zdarma (např. Pentaho , BIRT , atd.), ale integrace bývá lepší se serverem SQL.

To znamená, že existují významné nevýhody, které pro vás mohou, ale nemusí být překážkou:

  • jste zaseknutí v používání serverů Windows se všemi výhodami a nevýhodami, které to přináší
  • SQL Server, zejména edice vyšší třídy, jsou drahé ! Pro malé DB (myslím, že <4 GB) je SQL Server Express zdarma a je téměř stejně plnohodnotný jako běžný SQL Server – pokud víte, že vaše data budou malá a víte, že váš šéf je laciný , Express je způsob, jak jít. Je tu také nová edice SQL Server 2008 Web Edition, která by pro webové aplikace připojené k internetu měla teoreticky nabízet levný hosting, protože náklady na hostitele jsou pouze 15 $ měsíčně na procesor.
  • Nejde o open source. Některé společnosti a vývojové týmy jsou do toho velmi zapálené, a to z dobrých důvodů (ladění, náklady, filozofie atd.)!
  • související s výše uvedeným:pokud chcete opravit chybu v MySQL a máte na to dovednosti, můžete ji opravit sami. S SQL Serverem jsou bolestivé chyby ve zpracování dotazů, optimalizace atd., které přetrvávají roky – na některých z nich jsem strávil absurdní množství času.
  • pro velmi jednoduché, pouze pro čtení (nebo netransakční) pracovní zátěže (např. přístup k mezipaměti založené na databázi z webové aplikace), kde vám projde používání MyISAM místo InnoDB, jsem slyšel, že MySQL může být výrazně rychlejší .

Upozornění:Slyšel jsem, že MySQL 6.0 má řešit mnohé z výše uvedených mezer a rozdílů, ale přiznal jsem, že jsem si neudržel krok s tím, jak věc Oracle atd. ovlivní plán a/nebo sadu funkcí.

re:vaše poznámka "C# je vestavěná":ano, můžete vyvíjet uložené procedury, funkce, agregáty atd. pomocí jazyků .NET, ale IMHO ve většině scénářů je to větší problém, než stojí za to, včetně toho, že nasazení je těžší a DBA jsou méně spokojeni s kódem .NET na svých serverech. Skutečnou výhodou kombinace C# + .NET + Visual Studio + SQL Server je IMHO to, že byly navrženy paralelně během posledních 10 let, aby všechny dobře spolupracovaly, takže získáte snadné použití a synergii, kterou nemusí používat MySQL. To znamená, jak jsem poznamenal výše, nejedná se o nic, co by narušilo dohodu nebo dohodu vytvořilo... je to jen plynulejší pomocí SQL Serveru se zbytkem Microsoft stacku.

Stručně řečeno, dovolte mi ujasnit, že pro mnoho pracovních zátěží DB je MySQL dostačující – funguje, je stabilní, je rychlý, má přiměřeně dobré nástroje atd. A je cenově dostupný! :-) Nikdy bych neodmítl projekt jen proto, že používají MySQL. Ale to srovnání je jako jízda Honda vs. BMW... Honda vás dostane tam, kam chcete, ale pokud to vaše peněženka unese, s Bimmerem si jízdu užijete mnohem víc. :-)



  1. Nelze vrátit výsledky z uložené procedury pomocí kurzoru Pythonu

  2. php – Povolení uživatelům přidávat oblíbené příspěvky

  3. Můžeme redistribuovat Oracle tools.jar?

  4. Vzdálený přístup k MySQL