Mysql
 sql >> Baza danych >  >> RDS >> Mysql

C# — MySQL kontra Microsoft SQL Server

Używałem SQL Server od wielu lat w dużych i małych projektach C#, ale przez ostatni rok używałem głównie MySQL w różnych projektach C# (ale związanych z open source i związanych z uruchamianiem), które już używały MySQL.

Tęsknię za SQL Serverem! Z mojego doświadczenia wynika, że ​​SQL Server jest lepszy pod wieloma względami:

  • Optymalizator zapytań w SQL Server jest mądrzejszy, co oznacza, że ​​często można tworzyć zapytania i tworzyć optymalne plany zapytań. Dzięki MySQL spędzam więcej czasu na ręcznym dostrajaniu nawet stosunkowo prostych zapytań, aby tworzyć dobre plany zapytań.
  • Podstawowy silnik bazy danych w SQL Server może wykonywać wiele różnych czynności w celu zwiększenia wydajności. na przykład wszystkie złączenia w MySQL są złączeniami zagnieżdżonymi, podczas gdy SQL Server może wykonywać złącza mieszające lub złącza scalające, które czasami mogą zwiększyć wydajność zapytań ponad 10 razy. SQL Server może również zrównoleglać zapytania, które, szczególnie w przypadku dużych obciążeń hurtowni danych, mogą znacznie zwiększyć wydajność.
  • Narzędzia GUI są daleko do przodu. Graficzny optymalizator zapytań SQL Server sprawia, że ​​optymalizacja zapytań jest bardzo prosta — nigdy nie będziesz chciał wracać do EXPLAIN EXTENDED. Graficzne narzędzia do monitorowania SQL Server 2008 są o wiele łatwiejsze niż przekopywanie się przez powolny dziennik zapytań, aby dowiedzieć się, co dzieje się nie tak. I tak dalej.
  • Jak wspomniałeś, historia integracji .NET (C#, Linq, Entity Framework itp.) w SQL Server jest lepsza. Używam C#, Entity Framework i LINQ z MySQL, więc nie jest to coś albo coś, chociaż wydajność prawdopodobnie będzie lepsza z SQL Server w środowisku .NET, ponieważ zespoły współpracują ze sobą, aby zwiększyć wydajność i usprawnić integrację .
  • Obsługa języka SQL serwera SQL jest bogatsza niż MySQL, w tym kilka bardzo fajnych funkcji (szczególnie w SQL 2008), takich jak ROW_NUMBER() , GROUPING_SETS , OPTIMIZE FOR , kolumny obliczane itp.
  • Tworzenie kopii zapasowych jest wielokrotnie szybsze, szczególnie w SQL 2008 ze skompresowanymi kopiami zapasowymi
  • Nie ma chmury akwizycyjnej Oracle, która wisi nad przyszłością SQL Server.
  • SQL Server (zwłaszcza drogie edycje) zawiera inne dodatki, takie jak hurtownia danych OLAP (SSAS), rozwiązanie do raportowania (SSRS), narzędzie ETL (SSIS), harmonogram (SQL Agent) itp. Możesz uzyskać podobne narzędzia open source za darmo (np. Pentaho , BIRT , itp.), ale integracja wydaje się być lepsza z SQL Server.

To powiedziawszy, istnieją znaczące wady, które mogą, ale nie muszą, być dla Ciebie łamaniem umowy:

  • utkniesz przy korzystaniu z serwerów Windows, ze wszystkimi plusami i minusami, jakie to za sobą pociąga
  • SQL Server, zwłaszcza wersje z wyższej półki, są drogie ! Dla małych baz danych (<4 GB, jak sądzę), SQL Server Express jest bezpłatny i prawie tak samo w pełni funkcjonalny jak zwykły SQL Server — jeśli wiesz, że twoje dane będą małe, a twój szef jest tani Express to droga. Ponadto dostępna jest nowa wersja SQL Server 2008 Web Edition, która w przypadku aplikacji internetowych z dostępem do Internetu powinna teoretycznie oferować tani hosting, ponieważ koszt hostingu wynosi tylko 15 USD/miesiąc na procesor.
  • To nie jest open source. Niektóre firmy i zespoły programistyczne bardzo pasjonują się tym z ważnych powodów (debugowanie, koszty, filozofia itp.)!
  • związane z powyższym:jeśli chcesz naprawić błąd w MySQL i masz odpowiednie umiejętności, możesz to naprawić samodzielnie. W przypadku SQL Server występują bolesne błędy w przetwarzaniu zapytań, optymalizacji itp., które utrzymują się przez lata — spędziłem absurdalnie dużo czasu pracując nad niektórymi z nich.
  • w przypadku bardzo prostych, tylko do odczytu (lub nietransakcyjnych) obciążeń (np. dostęp do pamięci podręcznej opartej na bazie danych z aplikacji internetowej), gdzie można uciec od używania MyISAM zamiast InnoDB, słyszę, że MySQL może być znacznie szybszy .

Zastrzeżenie:Słyszałem, że MySQL 6.0 ma rozwiązać wiele z powyższych luk i różnic, ale przyznaję, że nie byłem na bieżąco z tym, jak Oracle itp. wpłynie na harmonogram i/lub zestaw funkcji.

re:Twój "C# jest wbudowany" uwaga:tak, możesz tworzyć procedury składowane, funkcje, agregaty itp. przy użyciu języków .NET, ale IMHO w większości scenariuszy jest to więcej kłopotów niż jest to warte, w tym dlatego, że wdrożenie jest trudniejsze i Administratorzy baz danych nie czują się komfortowo z kodem .NET na swoich serwerach. Prawdziwą korzyścią dla kombinacji C# + .NET + Visual Studio + SQL Server, IMHO, jest to, że zostały one zaprojektowane równolegle w ciągu ostatnich 10 lat, aby wszystkie dobrze ze sobą współpracowały, dzięki czemu uzyskasz łatwość użycia i synergię, którą może nie korzystać z MySQL. To powiedziawszy, jak wspomniałem powyżej, nie jest to łamacz transakcji ani twórca transakcji ... po prostu płynniejsze jest korzystanie z SQL Server z resztą stosu Microsoft.

Podsumowując, chciałbym wyjaśnić, że dla wielu obciążeń bazodanowych MySQL jest wystarczająco dobry -- działa, jest stabilny, szybki, ma dość dobre narzędzia itp. I jest niedrogi! :-) Nigdy nie odmówiłbym projektu tylko dlatego, że używa MySQL. Ale porównanie jest jak jazda Hondą kontra BMW... Honda zabierze Cię tam, gdzie chcesz, ale jeśli Twój portfel to zniesie, będziesz cieszyć się jazdą o wiele bardziej z Bimmerem. :-)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyświetl obraz BLOB Laravel 4

  2. Wybierz wartości z listy, których nie ma w tabeli

  3. Dlaczego _ (podkreślenie) pasuje do - (łącznik)?

  4. Żadne operacje nie są dozwolone po zamknięciu wyciągu

  5. Wydajność MySQL — wolne zapytania i innodb_buffer_pool_size