Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

C# - MySQL vs Microsoft SQL Server

Saya telah menggunakan SQL Server selama bertahun-tahun pada proyek C# besar dan kecil, tetapi sebagian besar telah menggunakan MySQL selama setahun terakhir pada berbagai proyek C# (tetapi terkait sumber terbuka dan terkait startup) yang sudah menggunakan MySQL.

Saya merindukan SQL Server! Dalam pengalaman saya, SQL Server lebih baik dalam banyak hal:

  • pengoptimal kueri di SQL Server lebih cerdas, artinya Anda dapat sering membuat kueri dan mereka akan menghasilkan rencana kueri yang optimal. Dengan MySQL, saya menghabiskan lebih banyak waktu untuk menyesuaikan kueri yang relatif sederhana untuk menghasilkan rencana kueri yang baik.
  • mesin database yang mendasari di SQL Server dapat melakukan berbagai hal yang lebih luas untuk meningkatkan kinerja. misalnya, semua gabungan di MySQL adalah gabungan Nested Loop, sementara SQL Server dapat melakukan Hash Joins atau Merge Joins yang terkadang dapat meningkatkan kinerja kueri 10x+. SQL Server juga dapat memparalelkan kueri yang, khususnya untuk beban kerja gudang data yang besar, dapat meningkatkan kinerja secara dramatis.
  • alat GUI jauh di depan. Pengoptimal kueri rencana grafis SQL Server membuat pengoptimalan kueri menjadi mudah-- Anda tidak akan pernah ingin kembali ke EXPLAIN EXTENDED. Alat pemantauan grafis SQL Server 2008 jauh lebih mudah daripada menggali log kueri yang lambat untuk mencari tahu apa yang salah. Dan seterusnya.
  • Seperti yang Anda sebutkan, kisah integrasi .NET (C#, Linq, Entity Framework, dll.) di SQL Server lebih baik. Saya menggunakan C#, Entity Framework, dan LINQ dengan MySQL juga, jadi ini bukan salah satu dari keduanya, meskipun kinerja cenderung lebih baik dengan SQL Server di lingkungan .NET karena tim bekerja sama untuk meningkatkan kinerja dan membuat integrasi bekerja lebih baik .
  • Dukungan bahasa SQL SQL Server lebih kaya daripada MySQL, termasuk beberapa fitur yang sangat keren (khususnya di SQL 2008) seperti ROW_NUMBER() , GROUPING_SETS , OPTIMIZE FOR , kolom yang dihitung , dll.
  • Pencadangan berkali-kali lebih cepat, terutama di SQL 2008 dengan cadangan terkompresi
  • Tidak ada cloud akuisisi Oracle yang bergantung pada masa depan SQL Server.
  • SQL Server (terutama edisi mahal) datang dengan barang lain, seperti gudang data OLAP (SSAS), solusi pelaporan (SSRS), alat ETL (SSIS), penjadwal (Agen SQL), dll. Anda dapat dapatkan alat sumber terbuka serupa, gratis (mis. Pentaho , BIRT , dll.) tetapi integrasi cenderung lebih baik dengan SQL Server.

Meskipun demikian, ada kelemahan signifikan, yang mungkin atau mungkin bukan pemecah kesepakatan bagi Anda:

  • Anda terjebak menggunakan Server Windows, dengan semua plus dan minus yang menyertainya
  • SQL Server, terutama edisi kelas atas, mahal ! Untuk DB kecil (<4GB saya pikir), SQL Server Express gratis, dan hampir berfitur lengkap seperti SQL Server biasa-- jika Anda tahu data Anda akan kecil dan Anda tahu bos Anda pelit , Express adalah cara untuk pergi. Selain itu, ada SQL Server 2008 Web Edition baru yang, untuk aplikasi web yang terhubung ke internet, secara teoritis seharusnya menawarkan hosting murah karena biaya untuk penghosting hanya $15/bulan per prosesor.
  • Ini bukan sumber terbuka. Beberapa perusahaan dan tim pengembangan sangat menyukai hal ini, untuk alasan yang baik (debugging, biaya, filosofi, dll.) !
  • terkait dengan di atas:jika Anda ingin memperbaiki bug di MySQL, dan Anda memiliki keterampilan, Anda dapat memperbaikinya sendiri. Dengan SQL Server, ada bug menyakitkan dalam pemrosesan kueri, pengoptimalan, dll. yang bertahan selama bertahun-tahun-- Saya telah menghabiskan banyak waktu untuk mengerjakan beberapa di antaranya.
  • untuk beban kerja yang sangat sederhana, hanya-baca (atau non-transaksional) (misalnya, akses cache berbasis DB dari aplikasi web) di mana Anda dapat menggunakan MyISAM daripada InnoDB, saya mendengar bahwa MySQL dapat secara signifikan lebih cepat .

Peringatan:Saya mendengar bahwa MySQL 6.0 seharusnya mengatasi banyak kesenjangan dan perbedaan di atas, tetapi saya akui belum membuat diri saya cepat mengetahui bagaimana hal Oracle, dll. akan mempengaruhi jadwal dan/atau fitur.

re:"C# sudah terpasang" catatan:ya, Anda dapat mengembangkan prosedur tersimpan, fungsi, agregat, dll. menggunakan bahasa .NET, tetapi IMHO dalam sebagian besar skenario ini lebih banyak masalah daripada nilainya, termasuk karena penyebaran lebih sulit dan DBA kurang nyaman dengan kode .NET di server mereka. Kemenangan nyata untuk kombinasi C# + .NET + Visual Studio + SQL Server, IMHO, adalah bahwa mereka telah dirancang secara paralel selama 10 tahun terakhir untuk semua bekerja sama dengan baik, sehingga Anda akan mendapatkan kemudahan penggunaan dan sinergi yang Anda mungkin tidak bisa menggunakan MySQL. Yang mengatakan, seperti yang saya sebutkan di atas, ini bukan pemecah kesepakatan atau pembuat kesepakatan ... hanya saja lebih lancar menggunakan SQL Server dengan sisa tumpukan Microsoft.

Singkatnya, izinkan saya menjelaskan bahwa, untuk banyak beban kerja DB, MySQL cukup baik-- berfungsi, stabil, cepat, memiliki alat yang cukup bagus, dll. Dan harganya terjangkau! :-) Saya tidak akan pernah menolak proyek hanya karena mereka menggunakan MySQL. Tapi perbandingannya seperti mengendarai Honda vs. BMW... Honda membawa Anda ke tempat yang Anda inginkan, tetapi jika dompet Anda dapat membawanya, Anda akan lebih menikmati perjalanan dengan Bimmer. :-)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara menggunakan $_GET untuk mendapatkan beberapa parameter menggunakan nama yang sama di PHP

  2. Mysql - cara mengatur kenaikan otomatis untuk memulai dari nol

  3. Menginisialisasi database MySQL yang diterapkan di AWS EKS

  4. Bagaimana cara menjalankan kueri di MYSQL tanpa menulisnya ke log biner?

  5. SQLSTATE[42000]:Kesalahan sintaks atau pelanggaran akses:1055 Ekspresi #3 dari daftar SELECT tidak ada dalam klausa GROUP BY dan berisi nonagregated