MySQL - Các Engine Lưu Trữ

Xin chào, những người yêu thích cơ sở dữ liệu! Hôm nay, chúng ta sẽ khám phá thế giới kỳ diệu của các engine lưu trữ MySQL. Là giáo viên máy tính gần gũi của bạn, tôi rất vui mừng được hướng dẫn bạn trong hành trình này. Đừng lo lắng nếu bạn mới bắt đầu học lập trình - chúng ta sẽ bắt đầu từ những基础知识 và dần nâng cao. Vậy, hãy cầm một tách cà phê (hoặc trà, nếu đó là sở thích của bạn), và chúng ta cùng bắt đầu nhé!

MySQL - Storage Engines

Các Engine Lưu Trữ MySQL

Hãy tưởng tượng bạn đang xây dựng một ngôi nhà. Bạn cần một nền tảng vững chắc, phải không? Trong thế giới MySQL, các engine lưu trữ chính là nền tảng đó. Chúng quyết định cách dữ liệu của bạn được lưu trữ, truy xuất và quản lý. Hãy tưởng tượng chúng như những loại tủ đựng hồ sơ khác nhau, mỗi loại có cách tổ chức thông tin riêng.

MySQL rất tuyệt vời vì nó cho phép bạn chọn các engine lưu trữ khác nhau cho các bảng khác nhau. Đó như việc bạn có nhiều tủ đựng hồ sơ khác nhau trong văn phòng của mình, mỗi loại phù hợp với các loại tài liệu cụ thể.

Các Engine Lưu Trữ Thường Gặp

Hãy cùng nhìn qua một số engine lưu trữ phổ biến nhất bạn sẽ gặp:

  1. InnoDB
  2. MyISAM
  3. Memory
  4. CSV
  5. Archive

Mỗi engine này có những ưu thế và trường hợp sử dụng riêng. Ví dụ, InnoDB giống như tủ đựng hồ sơ đa năng, có thể đáp ứng hầu hết nhu cầu của bạn. Còn MyISAM rất tốt cho các hoạt động đọc nhiều, giống như một thư viện catalog được tổ chức tốt.

Hãy cùng tìm hiểu sâu hơn về từng engine:

InnoDB

InnoDB là engine lưu trữ mặc định trong MySQL 5.7 và các phiên bản sau. Nó như một cây kéo đa năng của các engine lưu trữ - linh hoạt và đáng tin cậy. Dưới đây là lý do nó rất phổ biến:

  • Hỗ trợ các giao dịch (tuân thủ ACID)
  • Hỗ trợ các khóa ngoại cho tính toàn vẹn tham chiếu
  • Cung cấp khóa cấp hàng cho khả năng đồng bộ hóa tốt hơn

Dưới đây là ví dụ tạo một bảng với InnoDB:

CREATE TABLE students (
id INT PRIMARY KEY,
name VARCHAR(50),
age INT
) ENGINE=InnoDB;

Trong ví dụ này, chúng ta đang tạo một bảng叫做 'students' với engine lưu trữ là InnoDB. Phần ENGINE=InnoDB là phần chỉ định engine lưu trữ.

MyISAM

MyISAM là engine cũ hơn, nhưng nó vẫn có những ứng dụng. Nó rất tốt cho các hoạt động đọc nhiều và tìm kiếm全文. Tuy nhiên, nó không hỗ trợ các giao dịch hoặc khóa ngoại.

CREATE TABLE books (
id INT PRIMARY KEY,
title VARCHAR(100),
author VARCHAR(50)
) ENGINE=MyISAM;

Điều này tạo ra một bảng 'books' sử dụng engine MyISAM. Lưu ý rằng cú pháp tương tự như ví dụ InnoDB, chỉ khác engine được chỉ định.

Lệnh SHOW ENGINES

Hiện tại, bạn có thể đang tự hỏi, "Làm thế nào để biết engine nào khả dụng trên máy chủ MySQL của tôi?" Đó là một câu hỏi tuyệt vời! MySQL cung cấp một lệnh rất tiện lợi cho điều này:

SHOW ENGINES;

Lệnh này sẽ hiển thị bảng với tất cả các engine lưu trữ khả dụng, tình trạng hỗ trợ và các thông tin hữu ích khác. Đó như việc bạn hỏi MySQL, "Hey, bạn có những công cụ gì trong hộp công cụ của mình?"

Đặt Engine Lưu Trữ

Khi bạn tạo một bảng mới, bạn có thể chỉ định engine lưu trữ nào để sử dụng. Nếu bạn không chỉ định, MySQL sẽ sử dụng engine mặc định (thường là InnoDB). Dưới đây là cách bạn có thể đặt engine lưu trữ:

CREATE TABLE products (
id INT PRIMARY KEY,
name VARCHAR(100),
price DECIMAL(10,2)
) ENGINE=InnoDB;

Trong ví dụ này, chúng ta đang rõ ràng yêu cầu MySQL sử dụng InnoDB cho bảng 'products'.

Thay Đổi Engine Lưu Trữ Mặc Định

Vậy nếu bạn muốn thay đổi engine lưu trữ mặc định cho tất cả các bảng mới? Bạn cũng có thể làm điều đó! Dưới đây là cách:

SET default_storage_engine=MyISAM;

Sau khi chạy lệnh này, bất kỳ bảng mới nào bạn tạo mà không chỉ định engine sẽ sử dụng MyISAM thay vì InnoDB.

Thay Đổi Engine Lưu Trữ

Giả sử bạn đã tạo một bảng, nhưng bạn thay đổi ý kiến về engine lưu trữ. Đừng lo lắng! Bạn có thể thay đổi bảng để sử dụng engine khác:

ALTER TABLE students ENGINE = MyISAM;

Lệnh này thay đổi bảng 'students' từ engine nào đó nó đang sử dụng trước đó sang MyISAM. Đó như việc bạn nâng cấp tủ đựng hồ sơ của mình!

Sử Dụng Engine Lưu Trữ Bằng Chương Trình Khách

Bạn cũng có thể tương tác với các engine lưu trữ bằng các chương trình khách như MySQL command-line client. Dưới đây là bảng một số lệnh hữu ích:

Lệnh Mô tả
SHOW ENGINES; Hiển thị các engine lưu trữ khả dụng
SHOW TABLE STATUS; Hiển thị engine lưu trữ cho mỗi bảng
SELECT ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'your_database' AND TABLE_NAME = 'your_table'; Hiển thị engine cho một bảng cụ thể

Lưu ý rằng các lệnh này không phân biệt chữ hoa-thường, vì vậy SHOW ENGINES; tương đương với show engines;.

Và thế là bạn đã có tất cả, các bạn! Chúng ta đã cùng nhau khám phá vùng đất của các engine lưu trữ MySQL. Từ việc hiểu chúng là gì, đến việc tạo bảng với engine cụ thể, đến việc thay đổi engine trên các bảng đã tồn tại - bạn đã được trang bị kiến thức để đưa ra những quyết định thông minh về cách dữ liệu của bạn được lưu trữ và quản lý.

Nhớ rằng, việc chọn engine lưu trữ phù hợp giống như việc chọn công cụ phù hợp cho một công việc. Nó có thể tạo ra sự khác biệt lớn trong việc hiệu suất hoạt động của cơ sở dữ liệu của bạn. Vậy, hãy thử nghiệm với các engine khác nhau, xem chúng hoạt động như thế nào cho nhu cầu cụ thể của bạn, và đừng ngần ngại thay đổi nếu cần.

Khi kết thúc, tôi nhớ đến một câu đùa về quản trị viên cơ sở dữ liệu: Tại sao quản trị viên cơ sở dữ liệu bỏ vợ của mình? Bà ấy có quá nhiều khóa ngoại! Ba dum tss

Được rồi, okay, tôi sẽ tiếp tục dạy học. Chúc mọi người lập trình vui vẻ!

Credits: Image by storyset