03/08/2018, 10:07

MySQL Table Types & Storage Engines

Trong bài này chúng ta sẽ tìm hiểu một số loại table trong mysql và storage engines . Việc nắm từng loại table này giúp bạn sử dụng một cách hiệu ...

Trong bài này chúng ta sẽ tìm hiểu một số loại table trong mysql và storage engines. Việc nắm từng loại table này giúp bạn sử dụng một cách hiệu quả về tính performance, nghĩa là tối ưu hóa về tốc độ. Chúng ta sẽ tìm hiểu các loại table hoặc storage engines sau:

  • MyISAM
  • InnoDB
  • MERGE
  • MEMORY (HEAP)
  • ARCHIVE
  • CSV
  • FEDERATED

Mỗi loại có một ưu điểm và nhược điểm khác nhau, điều này rất quan trọng nên nếu bạn tận dụng được các ưu điểm đó thì ứng dụng của bạn sẽ thực sự rất tối ưu cơ sở dữ liệu. Bây giờ ta sẽ tìm hiểu từng loại nhé.

1. Các kiểu table trong MySQL

Sau đây là chi tiết về các kiểu table trong MySQL.

MyISAM

MyISAM là phần mở rộng cho công cụ lưu trữ ISAM cũ, các bảng  được lưu  trữ dưới dạng MyISAM được tối ưu hóa cho tốc độ nén. Kích thước của MyISAM có thẻ lên tới 256TB, rất là lớn phải không các bạn. Ngoài ra bảng kiểu MyISAM có thể được nén và chỉ đọc để tăng tính truy vấn lấy dữ liệu. Lúc MYSQL khởi động sẽ kiểm tra các bảng có kiểu MyISAM nếu bị lỗi thì nó sẽ fix lôi luôn, nên nếu ban lưu trữ cách này sẽ không an toàn.

Thông thường các bảng như tin tức, chuyên mục tin tức, sản phẩm, ... thì chúng ta sử dụng kiểu MyISAM để tốc độ truy vấn nó nhanh hơn. Các phiên bản bé hơn 5.5 thì MyISAM là kiểu bảng mặc định khi bạn tạo mới một table, kể từ bản 5.5 trở đi thì mặc định nó sẽ lấy kiểu InnoDB.

InnoDB

Các table InnoDB có đầy đủ các tính năng ACID-compliant và transaction và nó cũng được tối ưu hóa cho tính perormance. Bảng InnorDB hỗ trợ khóa ngoại (Foreign Key), commit, rollback trong transaction. Kích thước của InnoDB có thể lên tới 64TB, con số này khá nhỏ so với bảng MyISAM phải không nào.

Cũng như MyISAM lúc MySQL khởi động nó cũng kiểm tra các table nếu có lỗi thì sẽ báo hoặc tự fix (nếu cần thiết). 

MERGE

Bảng MERGE là bảng ảo, là sự kết hợp của nhiều bảng MyISAM có cấu trúc tương tự và đưa chúng vào một bảng duy nhất, chính vì vậy kiểu MERGE ta có thể hiểu nó có quy tắc giống như MyISAM . Các bảng MERGE không có chỉ số indexes riêng của mình mà nó sử dụng indexes của các bảng con.

Sử dụng bảng MERGE bạn có thể tăng tốc độ hiệu suất trong truy vấn tham gia nhiều bảng. MYSQL chỉ cho phép bạn thực hiện các thao tác SELECT, INSERT, UPDATE, DELETE trên bảng đó, nếu bạn DROP một table nằm trong danh sách table của bảng MERGE thì chỉ có các đặc điểm riêng của nó bị loại bỏ và các bảng bên dưới sẽ không bị ảnh hưởng.

Memory

Bảng memory được lưu trữ trong bộ nhớ và sử dụng chỉ số băm để có được tốc độ nhanh hơn các bảng MyISAM. Vòng đời sống của dữ liệu phụ thuộc vào thời gian sống của Database Server. Ta có thể hiểu store engine memory giống như bộ nhớ HEAP.

Archive

Archive là công cụ lưu trữ cho phép bạn lưu trữ số lượng lớn các bản ghi mà mục đích chỉ để lưu trữ và được chuyển sang định dạng nén để giảm bớt không gian lưu trữ. Nó sử dụng thư viện zlib để nén dữ liệu.

Các bảng lưu trữ chỉ cho phép thực hiện hai thao tác là INSERT và SELECT và nó không hỗ trợ chỉ mục indexes, chính vì vậy khi bạn thực hiện lệnh select nó sẽ đọc toàn bộ bảng nên tốc độ sẽ chậm.

CSV

CSV là phần mở rộng của Excel phải không nhỉ? Trong PHP thường ta sử dụng phần header có phần mở rộng là CSV để chuyển thành file Excel. Nhưng trong MYSQL thì với kiểu này nó sẽ lưu các fields dữ liệu sẽ được ngăn cách nhau bởi dấu phẩy, đây cũng là cách lưu trữ rất giống với NO-SQL

CSV table không hỗ trợ dữ liệu NULL và khi bạn truy vấn đọc (select) thì nó sẽ duyệt toàn bộ bảng giống như Archive.

FEDERATED

FEDERATED storage engine cho phép bạn quản lý dữ liệu máy chủ từ xa mà không cần sử dụng cluster. Các table Federated local sẽ không có dữ liệu mà khi bạn truy vấn dữ liệu thì dữ liệu sẽ được kéo về bảng này.

2. Lời kết

Thông thường chúng ta hay sử dụng hai loại là MyISAM hoặc InnoDB để xây dựng các ứng dụng. Việc phân biệt các loại table engine này sẽ giúp bạn có thể Design mô hình database và sử dụng chúng một cách hiệu quả hơn. Còn nếu bạn là newbie đang học MYSQL thì có thể đọc sơ qua và lưu lại đến lúc cần thì xem chứ hiện tại có lẽ bạn cũng chưa thể thực hành được, ngay cả tôi cũng chưa sử dụng hết các loại table kia.

BÀI KẾ SAU
BÀI KẾ TIẾP

Nguồn: code24h.com

Bài liên quan

Hướng dẫn tối ưu hóa và chống phân mảnh MySQL Table

Tối ưu và chống phân mảnh MySQL Table là một công tác quan trọng cần thực hiện định kì. Nếu ứng dụng thực hiện nhiều thao tác xóa (delete) và cập nhật (update) trên cơ sở dữ liệu MySQL thì tệp tin Cơ sở dữ liệu (CSDL) MySQL có khả năng bị phân mảnh. Điều đó dẫn tới việc rất nhiều tài nguyên ...

Bùi Văn Nam viết 11:02 ngày 18/09/2018

Tìm hiểu MySQL Table Types & Storage Engines

Hướng dẫn cài đặt MySQL và tham quan PHPMyAdmin Danh sách kiểu dữ liệu MySQL Data Types Lệnh tạo database (Create Database) trong MySQL Tìm hiểu cách sử dụng hiệu quả một số loại table trong mysql và storage engines với những loại như: MyISAM, innoDB, merge, memory, archive, csv, ...

Tạ Quốc Bảo viết 17:21 ngày 04/09/2018

Danh sách kiểu dữ liệu MySQL Data Types

Hướng dẫn cài đặt MySQL và tham quan PHPMyAdmin Tìm hiểu MySQL Table Types & Storage Engines Lệnh tạo database (Create Database) trong MySQL Hướng dẫn lệnh tạo bảng (Create Table) trong MySQL Các kiểu dữ liệu MySQL data types trong MYSQL thông dụng được mình định nghĩa đầy đủ khi ...

Hoàng Hải Đăng viết 17:17 ngày 04/09/2018

Sử dụng Sphinx như MySQL Storage Engine (SphinxSE)

Quản Trị Mạng - SphinX là 1 trong những cỗ máy tìm kiếm dữ liệu dạng text mạnh mẽ nhất đối với MySQL . Việc cài đặt Sphinx daemon khá đơn giản như khi bạn tiến hành biên dịch từ bộ mã nguồn sử dụng gói .DEB/.RPM, nhưng việc sử dụng SphinxSE đã phức tạp hơn 1 ...

Bùi Văn Nam viết 11:38 ngày 22/08/2018

Understanding MySQL binary and non-binary string data types

Có hai loại dữ liệu chuỗi được MySql support và hiểu các đặc điểm của chúng một cách chính xác sẽ cho phép bạn chọn loại dữ liệu thích hợp để phù hợp với các yêu cầu của ứng dụng. Sau khi xem xét các cấu trúc bảng khác nhau được thiết kế bởi những người khác nhau, tôi đã đi đến kết luận rằng ...

Hoàng Hải Đăng viết 18:22 ngày 12/08/2018
0