Tìm hiểu các Storage Engine trong MySQL

  • Monday 23/08/2021

Bài viết này sẽ giúp bạn tìm hiểu các Storage Engine trong MySQL

Storage engine (cơ chế lưu trữ) là gì?

Storage engine thực chất là cách mà MySQL lưu trữ dữ liệu trên đĩa cứng. Mỗi database sẽ được MySQL lưu dưới dạng thư mục con của thư mục data. Khi tạo table, MySQL sẽ tạo ra một file có tên trùng với tên table đó và có đuôi file định dạng .frm ở trong thư mục database.

So sánh các Storage Engine trong MySQL

MyISAM

  • Chỉ có thể đọc table đồng thời mà không thể ghi đồng thời
  • Tự sữa chữa và phục hồi dữ liệu tốt sau khi hệ thống bị crash.
  • Hỗ trợ tìm kiếm full-text index.
  • Tăng tốc độ ghi nhờ không ghi dữ liệu vào ổ cứng ngay mà ghi vào buffer trên RAM trước, sau một khoảng thời gian mới ghi vào ổ cứng.
  • Hỗ trợ nén dữ liệu giúp tăng tốc độ đọc dữ liệu nhưng dữ liệu sau khi nén không thể cập nhật được.

InnoDB

  • Có khả năng phục hồi, sửa chữa tốt.
  • Là engine phức tạp nhất trong các engine của MySQL.
  • Hỗ trợ MVCC (Multiversion Concurrency Control) do đó table có thể đọc và ghi đồng thời.
  • Sử dụng clustered index do đó hiệu năng tìm kiếm theo primakey rất cao.
  • Lưu dữ liệu trên 1 file (thuật ngữ gọi là tablespace).
  • Hỗ trợ transactions.

ARCHIVE

  • Thường được sử dụng với mục đích lưu trữ. Cơ chế ARCHIVE cho phép lưu trữ một số lượng lớn các bản ghi dưới định dạng nén để tiết kiệm dung lượng đĩa. Khi có một bản ghi được chèn vào, cơ chế ARCHIVE sẽ nén nó lại và giải nén nó bằng cách sử dụng thư viện zlib khi nó được đọc.
  • Các bảng ARCHIVE chỉ cho phép các câu lệnh INSERT và SELECT. Các bảng này không hỗ trợ full-text index, vì vậy cần phải quét toàn bộ bảng để đọc các hàng.

MERGE

  • Bảng MERGE là một bảng ảo kết hợp nhiều bảng MyISAM, nó có cấu trúc tương tự như một bảng. Cơ chế MERGE hay còn gọi là MRG_MyISAM . Các bảng MERGE không có chỉ số riêng của mình, nó sử dụng full-text index của các bảng thành phần thay thế.
  • Sử dụng bảng MERGE, bạn có thể tăng tốc hiệu suất khi kết hợp nhiều bảng. MySQL chỉ cho phép bạn thực hiện các thao tác SELECT, DELETE, UPDATE và INSERT trên các bảng MERGE. Nếu bạn sử dụng câu lệnh DROP TABLE trên một bảng MERGE, chỉ có bảng MERGE chỉ định bị xóa. Các bảng My_ISAM bên dưới sẽ không bị ảnh hưởng.

BLACKHOLE

  • Cơ chế này chỉ chấp nhận chứ không lưu trữ dữ liệu. Nó tương tự như /dev/null trong UNIX, các truy vấn luôn trả về một tập hợp trống. Điều này có thể hữu ích trong môi trường cơ sở dữ liệu phân tán nơi bạn không muốn lưu trữ dữ liệu cục bộ hoặc trong các tình huống kiểm tra hiệu suất hoặc khác.

 

FEDERATED

  • Cho phép bạn quản lý dữ liệu của máy chủ MySQL từ xa mà không cần sử dụng công nghệ cluster hoặc replication. Bảng FEDERATED cục bộ không lưu trữ dữ liệu. Khi bạn truy vấn dữ liệu từ bảng FEDERATED cục bộ, dữ liệu được lấy tự động từ các bảng FEDERATED từ xa.

MEMORY

  • Các bảng MEMORY được lưu trữ trong bộ nhớ và sử dụng các chỉ mục băm để tìm kiếm nhanh hơn các bảng MyISAM. Thời gian tồn tại của dữ liệu trong các bảng MEMORY phụ thuộc vào thời gian hoạt động của máy chủ cơ sở dữ liệu. Cơ chế lưu trữ MEMORY trước đây được gọi là HEAP.

CSV

  • Cơ chế này lưu trữ dữ liệu ở định dạng tệp giá trị được phân tách bằng dấu phẩy (CSV). Với bảng CSV, ta có thể thuận tiện để di chuyển dữ liệu vào các ứng dụng không phải SQL, ví dụ như excel.
  • Bảng CSV không hỗ trợ kiểu dữ liệu NULL. Ngoài ra, thao tác đọc yêu cầu quét toàn bộ bảng.

Để kiểm tra xem MySQL của bạn có hỗ trợ các cơ chế trên hay không, có thể dùng lệnh sau:

Vậy là chúng tôi đã hoàn tất bài viết tìm hiểu các Storage Engine phổ biến trong MySQL. Nếu cần hỗ trợ, bạn vui lòng liên hệ kythuat@pavietnam.vn, website: https://support.pavietnam.vn

Tham khảo các bài viết khác tại đây

Các khuyến mãi tại đây