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.

Không có nhận xét nào:

Đăng nhận xét

Đề nghị sử dụng từ ngữ lịch sự hoặc nhận xét sẽ không bao giờ được hiển thị