Mysql Vs Mssql Và Oracle
11:18AM 30/06/2010, Lập trình web
MySql phiên bản 4.x không thể so với MSSQL vì phiên bản này thiếu khá nhiều tính năng quan trọng để được xếp loại là một CSDL hạng nặng (ví dụ như thiếu ứng dụng View, StoreProc, Triggers...). Để công bằng nên thử so sánh MySql 5.x và MSSQL 2005.
1. Tính năng:
MySql hơn MSSQL ở tính năng cung cấp nhiều loại storage engine. Tuy nhiên tính về mặt integration chặt chẽ cho trọn bộ hệ thống và công cụ phát triển software thì MSSQL integrate tốt hơn MySql, đặc biệt ở mảng .NET. MSSQL còn hỗ trợ XML trực tiếp trong DB, trong khi đó thì MySQL chưa làm được chuyện này. Các chức năng cần thiết như View, StoreProcedure, Trigger thì cả hai tương đương nhau.
2. Hiệu suất:
Tính về mặt hiệu suất, có rất nhiều thử nghiệm và tường trình cho rằng MSSQL perform kém hơn MySQL nhiều mặt. MSSQL đòi hỏi tài nguyên rất lớn (CPU mạnh, nhiều RAM...), nếu không nó rất ì ạch. MySQL không đòi hỏi nhiều như MSSQL. MySQL có thể chạy trên các UNIX highend system và perform tốt hơn MSSQL trên Windows highend server trong nhiều trường hợp.
3. Bảo mật:
MSSQL qua mặt MySQL về tính bảo mật ở column level. MySQL chỉ có thể set access đến row level là hết. Hệ thống xác thực người dùng của MSSQL cũng qua mặt MySQL. Tuy vậy, trên bình diện "để hở cổng" thì MSSQL dễ bị exploit hơn MySQL bởi MSSQL tích hợp quá chặt vào hệ điều hành. Lỗi của hệ điều hành hoặc một bộ phận nào đó dẫn đến việc nhân nhượng MSSQL nhanh chóng hơn MySQL.
4. Khả năng nhân bản (replication):
Cả hai đều có khả năng replicate hoặc cung cấp phương tiện để làm việc này. Tuy nhiên, MySQL nhanh hơn và ít sự cố hơn MSSQL vì tất cả các SQL statements dùng để thay đổi, cập nhật dữ liệu được lưu giữ trong binary log. MSSQL cung cấp nhiều phương pháp replicate cao cấp hơn, chi tiết hơn bởi thế nó phức tạp hơn và chậm hơn.
5. Khả năng phục hồi (recovery):
Nếu MySQL chạy thuần túy với MyISAM storage engine thì khả năng phục hồi (sau khi bị crash) không cách gì so sánh với MSSQL. Tuy nhiên nếu MySQL chạy với Innodb engine thì khả năng phục hồi không thua kém gì MSSQL. Ngoài ra, khả năng phục hồi còn được xét ở biên độ liên quan đến khả năng nhân bản (replication) ở trên. Bởi vì MSSQL cung cấp nhiều phương thức nhân bản nên việc phục hồi dữ liệu trên MSSQL dễ dàng hơn.
Một số đặc điểm của InnoDB và MyISAM trong cơ sở dữ liệu MySQL:
- InnoDB hỗ trợ relationship (data integrity and foreign key constraints) còn MyISAM thì ko: Đa phần các open source đều không coi trọng việc này nhưng nếu ứng dụng của bạn bắt buộc phải dùng foreign key constraints thì InnoDB là lựa chọn của bạn.
- InnoDB hỗ trợ transactions còn MyISAM thì không: Nếu hệ thống của bạn dùng trong các ứng dụng ngân hàng hoặc phải thực hiện việc giao dịch thì chắc chắn là MyISAM sẽ bị loại.
+ Khi nào cần dùng Transaction ?
Khi ta muốn bảo đảm sự toàn vẹn của dữ liệu (không tạo ra các record mồ côi hoặc chứa thông tin sai lệch).
+ DùngTransaction để làm gì?
Để đảm bảo sự toàn vẹn của dữ liệu.
+ Lợi ích của nó ?
Lợi ích là đảm bảo sự toàn vẹn của dữ liệu.
Ví dụ như trong ngân hàng bạn còn $150, bạn lên internet, vào 2 tragn wweb cùng 1 lúc, mua 2 món hàng cùng lúc, một món trị giá $50 và 1 món trị giá $20.
Vậy, nếu đúng thì tài khoản của bạn phải còn lại $150 - $50-$20 = $80.
Tuy nhiên, thử tưởng tượng như sau:
- Đầu tiên ngân hàng nhận được yêu cầu mua hàng từ trang web 1, nó đọc tài khoản của bạn ra giá trị $150.
- Ngay lúc đó ngân hàng cũng nhận được yêu cầu từ trang web 2, nó đọc tài khoản của bạn, ra giá trị $150.
- Sau đó, vụ mua bán thứ nhất kết thúc, ngân hàng ghi lại vào tải khoản của bạn là $150-$50 = $100
- Lúc này vụ mua bán thứ 2 kết thúc và ngân hàng ghi lại vào tải khoản của bạn $150-$20 = $130
=> vậy là cuối cùng bạn còn $130 (sai) thay vì $80 (đúng).
Do vậy transaction được dùng để tránh những trường hợp tương tự như trên xảy ra.
- InnoDB thiên về row-level locking còn MyISAM thiên về table locking: Tức là khi hệ thống của bạn phải thực hiện nhiều các thao tác insert/update thì InnoDB là tốt hơn, còn nếu hệ thống của bạn thực hiện các thao tác select là chủ yếu thì dùng MyISAM là lựu chọn tốt hơn.
- MyISAM hỗ trợ full-text searches còn InnoDB thì không: Đây rõ ràng là một điểm yếu của InnoDB so với MyISAM, và dĩ nhiên là trong hệ thống có dùng full-text searches thì phải loại InnoDB đầu nước.
- Tốc độ của MyISAM cao hơn InnoDB: Khi hệ thống của bạn đòi hỏi performance cao thì MyISAM là lựa chọn tốt hơn.
- Cuối cùng nếu bạn là người mới làm về MySQL (cũng như DB nói chung) thì bạn nên dùng MyISAM vì rằng nó đơn giản hơn InnoDB.
6. Phí tổn:
MySQL bản community không hề tốn tiền để mua nhưng bạn phải tự xắn tay áo lên. Tuy nhiên cài đặt, sử dụng và tối ưu MySQL không khó vì tài liệu của nó rất đầy đủ, thông tin về MySQL tràn ngập trên web. So với MSSQL, bạn phải trả gần một ngàn rưỡi đô cho 1 license MSSQL standard và khi cần support, bạn phải trả thêm tiền support (tùy case). MS vẫn cung cấp bản MSSQL không thu phí dành cho mục đích development. Tài liệu về MSSQL cũng rất nhiều trên mạng. Bản MySQL enterprise thì phải trả tiền (khoảng 400 đô) nhưng bạn được support đầy đủ.
And Mysql Vs Oracle ????
+ MySQL là phần mềm mã nguồn mở và nó được sự ủng hộ của cộng đồng hacker và phong trào mã nguồn mở.
+ Các công ty lớn có thể truy cập mã nguồn MySQL để tạo ra một bản khác dùng nội bộ công ty với mục đích phi thương mại mà không sợ vi phạm bản quyền.
+ Tốc độ MySQL khá nhanh, bảng của MySQL lên đến 8 gb đủ dùng cho các công ty không quá lớn. Tôi thì không nhớ nhưng MySQl hình như có thể xử lý được đến 12.000 connection đồng thời. Quá đủ dùng cho 80 % các công ty trên thế giới.
+ Các tính năng mạnh của MySQL đang được bổ sung dần qua từng phiên bản. Phiên bản 4.1 hiện tại không ít hơn tính năng là mấy so với SQL Server.
+ Chưa thấy ai chê về khả năng bảo mật của MySQL cả. Hồi SQL Server bị virus đập cho te tua thì MySQL hoàn toàn miễn dịch.
+ MySQL hoàn toàn miễn phí.
+ LAMP = Linux + Apache + MySQL + PHP đó là biểu tượng của công đồng mã nguồn mở
+ Số nhà phát triển dùng MySQL là rất lớn trên thế giới cho nên số các ứng dụng chạy trên MySQL là nhiều và cũng miễn phí
Tóm lại là các chức năng sql chuẩn của Mysql chạy khá tốt, tốc độ nhanh, có thể lưu trữ được 8Gb cho mỗi bảng, 12.000 connection đồng thời (Quá đủ dùng cho 80 % các công ty trên thế giới) như vậy là có thừa đủ lý do để chọn Mysql rồi phải không nào