Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

C # - MySQL và Microsoft SQL Server

Tôi đã sử dụng SQL Server trong nhiều năm cho các dự án C # lớn và nhỏ, nhưng đã sử dụng chủ yếu MySQL trong năm qua trên các dự án C # (nhưng liên quan đến mã nguồn mở và liên quan đến khởi động) đã sử dụng MySQL.

Tôi nhớ SQL Server! Theo kinh nghiệm của tôi, SQL Server tốt hơn theo nhiều cách:

  • trình tối ưu hóa truy vấn trong SQL Server thông minh hơn, có nghĩa là bạn có thể thường xuyên tạo các truy vấn và chúng sẽ tạo ra các kế hoạch truy vấn tối ưu. Với MySQL, tôi thấy mình dành nhiều thời gian hơn để điều chỉnh thủ công ngay cả những truy vấn tương đối đơn giản để tạo ra các kế hoạch truy vấn tốt.
  • công cụ cơ sở dữ liệu cơ bản trong SQL Server có thể thực hiện nhiều việc khác nhau để tăng hiệu suất. ví dụ:tất cả các phép nối trong MySQL đều là phép nối Vòng lặp lồng nhau, trong khi SQL Server có thể thực hiện các phép nối Hash hoặc phép ghép nối, đôi khi có thể tăng hiệu suất truy vấn lên 10x +. SQL Server cũng có thể song song hóa các truy vấn, đặc biệt là đối với khối lượng công việc kho dữ liệu lớn, có thể tăng hiệu suất một cách đáng kể.
  • các công cụ GUI đã đi trước hàng dặm. Trình tối ưu hóa truy vấn kế hoạch đồ họa của SQL Server giúp việc tối ưu hóa truy vấn trở nên nhanh chóng - bạn sẽ không bao giờ muốn quay lại GIẢI THÍCH ĐÃ MỞ RỘNG. Các công cụ giám sát đồ họa của SQL Server 2008 dễ dàng hơn nhiều so với việc đào qua nhật ký truy vấn chậm để tìm ra điều gì đang xảy ra. Và tiếp tục như vậy.
  • Như bạn đã đề cập, câu chuyện tích hợp .NET (C #, Linq, Entity Framework, v.v.) trong SQL Server tốt hơn. Tôi cũng sử dụng C #, Entity Framework và LINQ với MySQL, vì vậy đó không phải là điều hay ho, mặc dù hiệu suất có thể sẽ tốt hơn với SQL Server trong môi trường .NET vì các nhóm làm việc cùng nhau để tăng hiệu suất và làm cho việc tích hợp hoạt động tốt hơn .
  • Hỗ trợ ngôn ngữ SQL của SQL Server phong phú hơn MySQL, bao gồm một số tính năng rất thú vị (đặc biệt là trong SQL 2008) như ROW_NUMBER() , GROUPING_SETS , OPTIMIZE FOR , cột được tính , v.v.
  • Sao lưu nhanh hơn nhiều lần, đặc biệt là trong SQL 2008 với các bản sao lưu nén
  • Không có đám mây mua lại Oracle nào ảnh hưởng đến tương lai của SQL Server.
  • SQL Server (đặc biệt là các phiên bản đắt tiền) đi kèm với các tiện ích khác, như kho dữ liệu OLAP (SSAS), giải pháp báo cáo (SSRS), công cụ ETL (SSIS), bộ lập lịch (SQL Agent), v.v. Bạn có thể tải miễn phí các công cụ mã nguồn mở tương tự (ví dụ: Pentaho , BIRT , v.v.) nhưng tích hợp có xu hướng tốt hơn với SQL Server.

Điều đó nói lên rằng, có những nhược điểm đáng kể, có thể có hoặc có thể không gây khó khăn cho bạn:

  • bạn đang gặp khó khăn khi sử dụng Máy chủ Windows, với tất cả những ưu điểm và nhược điểm của điều này
  • SQL Server, đặc biệt là các phiên bản cao cấp hơn, đắt tiền ! Đối với các DB nhỏ (tôi nghĩ là <4GB), SQL Server Express là miễn phí và gần như có đầy đủ tính năng như SQL Server thông thường - nếu bạn biết dữ liệu của mình sẽ nhỏ và bạn biết sếp của mình là một kẻ ham rẻ. , Express là con đường để đi. Ngoài ra, có phiên bản Web SQL Server 2008 mới, dành cho các ứng dụng web sử dụng internet, về mặt lý thuyết sẽ cung cấp dịch vụ lưu trữ giá rẻ vì chi phí cho một bộ lưu trữ chỉ là 15 đô la / tháng cho mỗi bộ xử lý.
  • Nó không phải là mã nguồn mở. Một số công ty và nhóm phát triển rất quan tâm đến vấn đề này, vì những lý do chính đáng (gỡ lỗi, chi phí, triết lý, v.v.)!
  • liên quan đến ở trên:nếu bạn muốn sửa một lỗi trong MySQL và bạn đã có các kỹ năng, bạn có thể tự sửa lỗi đó. Với SQL Server, có những lỗi nghiêm trọng trong xử lý truy vấn, tối ưu hóa, v.v. tồn tại trong nhiều năm - Tôi đã dành một khoảng thời gian vô lý để giải quyết một số lỗi trong số đó.
  • đối với khối lượng công việc rất đơn giản, chỉ đọc (hoặc không giao dịch) (ví dụ:truy cập bộ nhớ cache dựa trên DB từ một ứng dụng web) nơi bạn có thể sử dụng MyISAM thay vì InnoDB, tôi nghe nói rằng MySQL có thể nhanh hơn đáng kể .

Lưu ý:Tôi nghe nói rằng MySQL 6.0 được cho là sẽ giải quyết nhiều lỗ hổng và sự khác biệt ở trên, nhưng tôi thừa nhận là đã không theo kịp tốc độ của Oracle, v.v. sẽ ảnh hưởng đến lịch trình và / hoặc bộ tính năng.

re:lưu ý "C # được tích hợp sẵn" của bạn:có, bạn có thể phát triển các thủ tục, hàm, tổng hợp, v.v. được lưu trữ bằng cách sử dụng ngôn ngữ .NET, nhưng IMHO trong hầu hết các trường hợp, điều này rắc rối hơn đáng có, bao gồm vì việc triển khai khó hơn và DBA ít thoải mái hơn với mã .NET trên máy chủ của họ. Chiến thắng thực sự cho sự kết hợp C # + .NET + Visual Studio + SQL Server, IMHO, là chúng đã được thiết kế song song trong 10 năm qua để tất cả hoạt động tốt cùng nhau, vì vậy bạn sẽ dễ sử dụng và có sức mạnh tổng hợp. có thể không sử dụng MySQL. Điều đó nói rằng, như tôi đã lưu ý ở trên, đây không phải là người phá vỡ thỏa thuận hay người tạo thỏa thuận ... nó chỉ mượt mà hơn khi sử dụng SQL Server với phần còn lại của ngăn xếp Microsoft.

Tóm lại, hãy để tôi nói rõ rằng, đối với nhiều khối lượng công việc DB, MySQL là đủ tốt - nó hoạt động, ổn định, nhanh, có các công cụ hợp lý tốt, v.v. Và giá cả phải chăng! :-) Tôi sẽ không bao giờ từ chối một dự án đơn giản vì họ đang sử dụng MySQL. Nhưng sự so sánh giống như lái một chiếc Honda và một chiếc BMW ... chiếc Honda sẽ đưa bạn đến nơi bạn muốn, nhưng nếu hầu bao của bạn có thể lấy nó, bạn sẽ tận hưởng chuyến đi hơn rất nhiều với 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. Làm thế nào để tìm các kết quả tương tự và sắp xếp theo độ tương tự?

  2. Cách chèn giá trị tiếng Do Thái vào db mysql trong php

  3. lỗi php include not findind path

  4. tạo một mảng từ cơ sở dữ liệu

  5. Làm cách nào để bạn thay đổi kiểu đối chiếu cho một cột MySQL?