Ich habe SQL Server viele Jahre lang für große und kleine C#-Projekte verwendet, habe aber im letzten Jahr hauptsächlich MySQL für verschiedene C#-Projekte (aber Open-Source-bezogene und Startup-bezogene) Projekte verwendet, die bereits MySQL verwendeten.
Ich vermisse SQL Server! Meiner Erfahrung nach ist SQL Server in vielerlei Hinsicht besser:
- Der Abfrageoptimierer in SQL Server ist intelligenter, was bedeutet, dass Sie häufig Abfragen erstellen können und diese optimale Abfragepläne erstellen. Bei MySQL verbringe ich mehr Zeit damit, selbst relativ einfache Abfragen von Hand zu optimieren, um gute Abfragepläne zu erstellen.
- Die zugrunde liegende Datenbank-Engine in SQL Server kann eine Vielzahl von Dingen tun, um die Leistung zu steigern. Beispielsweise sind alle Joins in MySQL Nested-Loop-Joins, während SQL Server Hash-Joins oder Merge-Joins ausführen kann, was manchmal die Abfrageleistung um das 10-fache steigern kann. SQL Server kann auch Abfragen parallelisieren, was insbesondere bei großen Data-Warehouse-Arbeitslasten die Leistung erheblich steigern kann.
- die GUI-Tools sind meilenweit voraus. Der grafische Plan-Abfrageoptimierer von SQL Server macht die Abfrageoptimierung zum Kinderspiel – Sie werden nie wieder zu EXPLAIN EXTENDED zurückkehren wollen. Die grafischen Überwachungstools von SQL Server 2008 sind so viel einfacher, als das langsame Abfrageprotokoll zu durchsuchen, um herauszufinden, was schief läuft. Und so weiter.
- Wie Sie bereits erwähnt haben, ist die Geschichte der .NET-Integration (C#, Linq, Entity Framework usw.) in SQL Server besser. Ich verwende C#, Entity Framework und LINQ auch mit MySQL, also ist es keine Entweder-Oder-Sache, obwohl die Leistung mit SQL Server in einer .NET-Umgebung wahrscheinlich besser ist, weil die Teams zusammenarbeiten, um die Leistung zu steigern und die Integration besser funktionieren zu lassen .
- Die SQL-Sprachunterstützung von SQL Server ist umfangreicher als die von MySQL, einschließlich einiger sehr cooler Funktionen (insbesondere in SQL 2008) wie
ROW_NUMBER()
,GROUPING_SETS
,OPTIMIZE FOR
, berechnete Spalten usw. - Die Sicherung ist um ein Vielfaches schneller, insbesondere in SQL 2008 mit komprimierten Sicherungen
- Es gibt keine Oracle-Akquisitionswolke, die über der Zukunft von SQL Server schwebt.
- SQL Server (insbesondere die teuren Editionen) werden mit anderen Goodies geliefert, wie einem OLAP Data Warehouse (SSAS), einer Reporting-Lösung (SSRS), einem ETL-Tool (SSIS), einem Planer (SQL Agent) usw. Sie können Holen Sie sich kostenlos ähnliche Open-Source-Tools (z. B. Pentaho ). , BIRT , etc.), aber die Integration mit SQL Server ist tendenziell besser.
Das heißt, es gibt erhebliche Nachteile, die für Sie ein Deal-Breaker sein können oder auch nicht:
- Sie stecken fest mit Windows Servern, mit all den Vor- und Nachteilen, die dies mit sich bringt
- SQL Server, insbesondere die höherwertigen Editionen, sind teuer ! Für kleine Datenbanken (<4 GB, glaube ich) ist SQL Server Express jedoch kostenlos und hat fast so viele Funktionen wie der reguläre SQL Server – wenn Sie wissen, dass Ihre Daten klein sein werden und Sie wissen, dass Ihr Chef ein Geizhals ist , Express ist der richtige Weg. Außerdem gibt es eine neue SQL Server 2008 Web Edition, die für webbasierte Web-Apps theoretisch günstiges Hosting bieten sollte, da die Kosten für einen Hoster nur 15 $/Monat pro Prozessor betragen.
- Es ist kein Open Source. Einige Unternehmen und Entwicklungsteams sind aus guten Gründen (Debugging, Kosten, Philosophie usw.) sehr leidenschaftlich dabei!
- bezogen auf oben:Wenn Sie einen Fehler in MySQL beheben möchten und über die nötigen Fähigkeiten verfügen, können Sie ihn selbst beheben. Bei SQL Server gibt es schmerzhafte Fehler in der Abfrageverarbeitung, Optimierung usw., die jahrelang bestehen bleiben – ich habe unglaublich viel Zeit damit verbracht, einige davon zu umgehen.
- Für sehr einfache, schreibgeschützte (oder nicht transaktionale) Workloads (z. B. einen DB-basierten Cache-Zugriff von einer Web-App), bei denen Sie MyISAM anstelle von InnoDB verwenden können, habe ich gehört, dass MySQL erheblich schneller sein kann .
Vorbehalt:Ich habe gehört, dass MySQL 6.0 viele der oben genannten Lücken und Unterschiede beheben soll, aber ich habe mich zugegebenermaßen nicht auf dem Laufenden darüber gehalten, wie sich das Oracle-Ding usw. auf den Zeitplan und/oder das Feature-Set auswirkt.
Betreff:Ihr "C # ist integrierter" Hinweis:Ja, Sie können gespeicherte Prozeduren, Funktionen, Aggregate usw. mit .NET-Sprachen entwickeln, aber meiner Meinung nach ist dies in den meisten Szenarien mehr Ärger als es wert ist, auch weil die Bereitstellung schwieriger ist und DBAs sind mit .NET-Code auf ihren Servern weniger vertraut. Der wirkliche Gewinn für eine Kombination aus C# + .NET + Visual Studio + SQL Server besteht meiner Meinung nach darin, dass sie in den letzten 10 Jahren parallel entwickelt wurden, um gut zusammenzuarbeiten, sodass Sie Benutzerfreundlichkeit und Synergien erhalten kann MySQL nicht verwenden. Das heißt, wie ich oben angemerkt habe, ist dies kein Deal-Breaker oder Deal-Maker ... es ist einfach reibungsloser, SQL Server mit dem Rest des Microsoft-Stacks zu verwenden.
Lassen Sie mich zusammenfassend klarstellen, dass MySQL für viele DB-Workloads gut genug ist – es funktioniert, es ist stabil, es ist schnell, es hat einigermaßen gute Tools usw. Und es ist erschwinglich! :-) Ich würde niemals ein Projekt ablehnen, nur weil sie MySQL verwenden. Aber der Vergleich ist wie das Fahren eines Honda vs. eines BMW ... der Honda bringt Sie dorthin, wo Sie hin wollen, aber wenn Ihr Geldbeutel es aushält, werden Sie die Fahrt mit dem Bimmer viel mehr genießen. :-)