Khóa - Khóa Cấp Bảng
Khóa Cấp Bảng - Khóa Bảng
Khóa cấp bảng khóa toàn bộ bảng trong mỗi thao tác. Loại khóa này có mức độ xung đột cao nhất, đồng thời mức độ đồng thời thấp nhất. Được sử dụng trong các công cụ lưu trữ như MyISAM, InnoDB và BDB.
- Khóa chia sẻ đọc (read lock): Không chặn đọc nhưng chặn ghi từ các client khác.
- Khóa độc quyền ghi (write lock): Chặn cả đọc lẫn ghi từ các client khác.
LOCK TABLES tên_bảng ... READ/WRITE;
UNLOCK TABLES;
Khóa Cấp Bảng - Khóa Metadata
Khóa metadata (MDL) được quản lý tự động bởi hệ thống. MDL đảm bảo tính nhất quán của dữ liệu khi có các giao dịch đang hoạt động trên bảng.
Ví dụ truy vấn để kiểm tra khóa metadata:
SELECT object_type, schema, tên_bảng, loại_khoá, duration FROM performance_schema.metadata_locks;
Khóa Cấp Bảng - Khóa Ý Định
Các khóa ý định bao gồm khóa ý định chia sẻ (IS) và khóa ý định độc quyền (IX).
SELECT schema, tên_bảng, index_name, loại_khoá, mode, data FROM performance_schema.data_locks;
Khóa - Khóa Cấp Hàng
Giới Thiệu Về Khóa Cấp Hàng
Khóa cấp hàng chỉ khóa các dòng cụ thể, giảm thiểu xung đột khóa và tăng cường khả năng đồng thời. Sử dụng trong công cụ lưu trữ InnoDB.
- Khóa bản ghi (Record Lock)
- Khóa khoảng cách (Gap Lock)
- Khóa next-key (Next-Key Lock)
Khóa Cấp Hàng - Các Loại Khóa
InnoDB hỗ trợ hai loại khóa cấp hàng: Khóa chia sẻ (S) và Khóa độc quyền (X).
SELECT schema, tên_bảng, index_name, loại_khoá, mode, data FROM performance_schema.data_locks;
Kiến Trúc Lưu Trữ Trong InnoDB
Lưu Trữ Logic Trong InnoDB
Bộ đệm (Buffer Pool) là một vùng bộ nhớ chính dùng để lưu trữ dữ liệu thường xuyên truy cập từ ổ cứng.
- Trang rỗi (free page)
- Trang sạch (clean page)
- Trang bẩn (dirty page)
Cấu Trúc Bộ Nhớ Trong InnoDB
Bộ đệm thay đổi (Change Buffer) lưu trữ các thay đổi đối với các trang không có trong Buffer Pool, sau đó hợp nhất chúng khi cần thiết.
CREATE TABLESPACE tên_tên ADD DATAFILE 'tên_file' ENGINE = engine_name;
CREATE TABLE tên ... TABLESPACE ts_name;
Cấu Trúc Đĩa Trong InnoDB
- Không gian bảng hệ thống (System Tablespace)
- Không gian bảng cho từng bảng (File-Per-Table Tablespaces)
- Không gian bảng tổng quát (General Tablespaces)
- Không gian bảng hủy bỏ (Undo Tablespaces)
- Không gian bảng tạm thời (Temporary Tablespaces)
Dòng Hậu Trường Trong InnoDB
- Master Thread: Quản lý các thao tác đồng bộ hóa dữ liệu.
- IO Thread: Xử lý các yêu cầu I/O thông qua AIO.
- Purge Thread: Thu hồi các log undo đã hoàn thành.
- Page Cleaner Thread: Giảm tải cho Master Thread bằng cách làm sạch trang bẩn.