Thời gian đọc: 9 phút
MariaDB và MySQL đều là hệ quản trị cơ sở dữ liệu phổ biến với nhiều tính năng mạnh mẽ. Mặc dù chúng có nhiều điểm tương đồng, MariaDB đã mở rộng và cải tiến một số tính năng so với MySQL. Dưới đây là một cái nhìn sâu sắc về các câu lệnh và tính năng nổi bật của MariaDB so với MySQL, bao gồm các ví dụ và ứng dụng cụ thể.
SHOW ENGINE INNODB STATUS
Ví dụ:
SHOW ENGINE INNODB STATUS;
Kết quả trả về sẽ cung cấp thông tin về các khóa hiện tại, bộ đệm, và các hoạt động đang diễn ra trên InnoDB.
Ví dụ:
SHOW ENGINE INNODB STATUS;
Kết quả của MariaDB bao gồm các thông tin bổ sung về các lỗi và các thông số hiệu suất, giúp bạn phân tích tình trạng của hệ thống một cách toàn diện.
SHOW STATUS LIKE 'wsrep_%'
Ví dụ:
SHOW STATUS LIKE 'wsrep_%';
Câu lệnh này trả về các thông số liên quan đến trạng thái và hoạt động của Galera Cluster, bao gồm các thông tin về số lượng các giao dịch đã hoàn tất và tình trạng đồng bộ hóa giữa các nút.
OPTIMIZE TABLE
Ví dụ:
OPTIMIZE TABLE table_name;
Lệnh này sẽ phân tích và tái tổ chức bảng để giảm phân mảnh và cải thiện hiệu suất truy vấn.
Ví dụ:
OPTIMIZE TABLE table1, table2, table3;
Câu lệnh này sẽ tối ưu hóa tất cả các bảng đã chỉ định trong một thao tác duy nhất.
ANALYZE TABLE
Ví dụ:
ANALYZE TABLE table_name;
Điều này giúp cải thiện hiệu suất của các truy vấn bằng cách đảm bảo rằng cơ sở dữ liệu có thông tin chính xác về phân phối dữ liệu.
Ví dụ:
ANALYZE TABLE table_name UPDATE HISTOGRAM;
Câu lệnh này không chỉ phân tích bảng mà còn cập nhật các biểu đồ thống kê, cung cấp cái nhìn sâu sắc hơn về phân phối dữ liệu.
CREATE PROCEDURE
và CREATE FUNCTION
Ví dụ:
CREATE PROCEDURE procedure_name()
BEGIN
-- code here
END;
Câu lệnh này tạo một thủ tục lưu trữ mà bạn có thể gọi nhiều lần trong các truy vấn khác nhau.
Ví dụ:
CREATE FUNCTION calculate_bonus(salary DECIMAL(10, 2))
RETURNS DECIMAL(10, 2)
BEGIN
RETURN salary * 0.1;
END;
Câu lệnh này tạo một hàm lưu trữ có thể được sử dụng trong các truy vấn để tính toán tiền thưởng.
CREATE TABLE IF NOT EXISTS
Ví dụ:
CREATE TABLE IF NOT EXISTS table_name (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL
);
Ví dụ:
CREATE TABLE IF NOT EXISTS table_name (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
INDEX (name)
) ENGINE=InnoDB;
Câu lệnh này không chỉ tạo bảng mà còn thiết lập các chỉ mục và cấu hình lưu trữ.
SEQUENCE
SEQUENCE
. Từ phiên bản 8.0, MySQL bắt đầu hỗ trợ tính năng này nhưng không mạnh mẽ như MariaDB.SEQUENCE
như một phần của SQL tiêu chuẩn, cho phép tạo các giá trị số tự động dễ dàng. Tính năng này giúp quản lý các số tự động và tăng cường tính linh hoạt trong việc sinh số liệu.Ví dụ:
CREATE SEQUENCE sequence_name
START WITH 1
INCREMENT BY 1;
Câu lệnh này tạo một dãy số tự động bắt đầu từ 1 và tăng lên 1 cho mỗi lần truy cập.
VIRTUAL
và PERSISTENT
ColumnsVí dụ:
CREATE TABLE example (
id INT AUTO_INCREMENT PRIMARY KEY,
data VARCHAR(100),
length AS (CHAR_LENGTH(data)) VIRTUAL
);
Ví dụ:
CREATE TABLE example (
id INT AUTO_INCREMENT PRIMARY KEY,
data VARCHAR(100),
length AS (CHAR_LENGTH(data)) PERSISTENT
);
Câu lệnh này tạo một cột lưu trữ mà dữ liệu được tính toán và lưu trữ vật lý, giúp truy xuất dữ liệu nhanh hơn.
SHOW PROCESSLIST
Ví dụ:
SHOW PROCESSLIST;
Câu lệnh này cung cấp thông tin về các truy vấn hiện đang thực thi, trạng thái của kết nối và thời gian hoạt động.
Ví dụ:
SHOW PROCESSLIST;
Thông tin chi tiết về các kết nối và hoạt động giúp bạn phân tích và điều chỉnh hiệu suất của cơ sở dữ liệu.
Cả MariaDB và MySQL đều cung cấp các tính năng mạnh mẽ để quản lý cơ sở dữ liệu. Tuy nhiên, MariaDB thường mở rộng và cải thiện các tính năng của MySQL với các tính năng bổ sung và khả năng tối ưu hóa hiệu suất. Hiểu rõ các câu lệnh và tính năng của từng hệ quản trị cơ sở dữ liệu sẽ giúp bạn tận dụng tối đa các công cụ này trong các dự án và ứng dụng của mình. Các tính năng mở rộng của MariaDB, như hỗ trợ Galera Cluster, cột ảo nâng cao và dãy số tự động, cung cấp các giải pháp linh hoạt và mạnh mẽ cho các yêu cầu cơ sở dữ liệu phức tạp.