Công cụ lưu trữ là các thành phần MySQL xử lý các hoạt động SQL cho các loại bảng khác nhau. InnoDB
là công cụ lưu trữ có mục đích mặc định và nhất, và Oracle khuyến nghị sử dụng nó cho các bảng ngoại trừ các trường hợp sử dụng chuyên dụng. [Câu lệnh CREATE TABLE
trong MySQL 8.0 tạo bảng InnoDB
theo mặc định.]
Máy chủ MySQL sử dụng kiến trúc công cụ lưu trữ có thể cắm cho phép các công cụ lưu trữ được tải vào và dỡ hàng từ máy chủ MySQL đang chạy.
Để xác định công cụ lưu trữ nào mà máy chủ của bạn hỗ trợ, hãy sử dụng câu lệnh SHOW ENGINES
. Giá trị trong cột Support
cho biết liệu một động cơ có thể được sử dụng hay không. Giá trị của YES
, NO
hoặc DEFAULT
chỉ ra rằng một động cơ có sẵn, không có sẵn hoặc có sẵn và hiện đang được đặt làm công cụ lưu trữ mặc định.
mysql> SHOW ENGINES\G
*************************** 1. row ***************************
Engine: PERFORMANCE_SCHEMA
Support: YES
Comment: Performance Schema
Transactions: NO
XA: NO
Savepoints: NO
*************************** 2. row ***************************
Engine: InnoDB
Support: DEFAULT
Comment: Supports transactions, row-level locking, and foreign keys
Transactions: YES
XA: YES
Savepoints: YES
*************************** 3. row ***************************
Engine: MRG_MYISAM
Support: YES
Comment: Collection of identical MyISAM tables
Transactions: NO
XA: NO
Savepoints: NO
*************************** 4. row ***************************
Engine: BLACKHOLE
Support: YES
Comment: /dev/null storage engine [anything you write to it disappears]
Transactions: NO
XA: NO
Savepoints: NO
*************************** 5. row ***************************
Engine: MyISAM
Support: YES
Comment: MyISAM storage engine
Transactions: NO
XA: NO
Savepoints: NO
...
Chương này bao gồm các trường hợp sử dụng cho các công cụ lưu trữ MySQL có mục đích đặc biệt. Nó không bao gồm công cụ lưu trữ InnoDB
mặc định hoặc công cụ lưu trữ InnoDB
0 được đề cập trong Chương & NBSP; 15, Công cụ lưu trữ Innodb và Chương & NBSP; 23, MySQL NDB Cluster 8.0. Đối với người dùng nâng cao, nó cũng chứa một mô tả về kiến trúc động cơ lưu trữ có thể cắm [xem Phần & NBSP; 16.11, Tổng quan về kiến trúc động cơ lưu trữ MySQL].
Để biết thông tin về các tính năng được cung cấp trong các nhị phân máy chủ MySQL thương mại, xem phiên bản MySQL, trên trang web MySQL. Các công cụ lưu trữ có sẵn có thể phụ thuộc vào phiên bản MySQL mà bạn đang sử dụng.
Để biết câu trả lời cho các câu hỏi thường được hỏi về các công cụ lưu trữ MySQL, xem Phần & NBSP; A.2, Câu hỏi thường gặp của MySQL 8.0: Các công cụ lưu trữ.
MySQL 8.0 Các công cụ lưu trữ được hỗ trợ
InnoDB
: Công cụ lưu trữ mặc định trong MySQL 8.0.InnoDB
là công cụ lưu trữ an toàn giao dịch [tuân thủ axit] cho MySQL có khả năng cam kết, rollback và phục hồi sự cố để bảo vệ dữ liệu người dùng.InnoDB
Khóa cấp hàng [không có sự leo thang để khóa hạt thô hơn] và các lần đọc không nhất quán theo kiểu Oracle làm tăng sự đồng thời và hiệu suất của nhiều người dùng.InnoDB
lưu trữ dữ liệu người dùng trong các chỉ mục được phân cụm để giảm I/O cho các truy vấn chung dựa trên các khóa chính. Để duy trì tính toàn vẹn của dữ liệu,InnoDB
cũng hỗ trợ các ràng buộc tích hợp tham chiếuInnoDB
6. Để biết thêm thông tin vềInnoDB
, xem Chương & NBSP; 15, Công cụ lưu trữ Innodb.InnoDB
8: Những bảng này có một dấu chân nhỏ. Khóa cấp bảng giới hạn hiệu suất trong khối lượng công việc đọc/ghi, do đó, nó thường được sử dụng trong khối lượng công việc chỉ đọc hoặc đọc nhiều nhất trong cấu hình lưu trữ dữ liệu và web.InnoDB
9: Lưu trữ tất cả dữ liệu trong RAM, để truy cập nhanh trong các môi trường yêu cầu tra cứu nhanh dữ liệu không quan trọng. Động cơ này trước đây được gọi là động cơCREATE TABLE
0. Các trường hợp sử dụng của nó đang giảm;InnoDB
với khu vực bộ nhớ nhóm đệm của nó cung cấp một cách có mục đích chung và bền để giữ hầu hết hoặc tất cả dữ liệu trong bộ nhớ vàCREATE TABLE
2 cung cấp tra cứu giá trị khóa nhanh cho các bộ dữ liệu phân tán khổng lồ.CREATE TABLE
3: Các bảng của nó thực sự là các tệp văn bản với các giá trị được phân tách bằng dấu phẩy. Các bảng CSV cho phép bạn nhập hoặc kết xuất dữ liệu ở định dạng CSV, để trao đổi dữ liệu với các tập lệnh và ứng dụng đọc và ghi cùng định dạng đó. Vì các bảng CSV không được lập chỉ mục, bạn thường giữ dữ liệu trong các bảngInnoDB
trong quá trình hoạt động thông thường và chỉ sử dụng các bảng CSV trong giai đoạn nhập hoặc xuất.CREATE TABLE
5: Những bảng nhỏ gọn, chưa được đăng ký này được dự định để lưu trữ và truy xuất một lượng lớn thông tin kiểm toán lịch sử, lưu trữ hoặc bảo mật được tham chiếu đến tham chiếu.CREATE TABLE
6: Công cụ lưu trữ blackhole chấp nhận nhưng không lưu trữ dữ liệu, tương tự như thiết bị UnixCREATE TABLE
7. Truy vấn luôn trả về một bộ trống. Các bảng này có thể được sử dụng trong các cấu hình sao chép trong đó các câu lệnh DML được gửi đến các máy chủ sao chép, nhưng máy chủ nguồn không giữ bản sao dữ liệu của riêng mình.InnoDB
0 [còn được gọi làCREATE TABLE
2]: Công cụ cơ sở dữ liệu phân cụm này đặc biệt phù hợp cho các ứng dụng yêu cầu mức độ hoạt động và tính khả dụng cao nhất có thể.InnoDB
0: Cho phép MySQL DBA hoặc nhà phát triển nhóm hợp lý một loạt các bảngInnoDB
8 giống hệt nhau và tham chiếu chúng là một đối tượng. Tốt cho môi trường VLDB như kho dữ liệu.InnoDB
2: Cung cấp khả năng liên kết các máy chủ MySQL riêng biệt để tạo một cơ sở dữ liệu logic từ nhiều máy chủ vật lý. Rất tốt cho môi trường phân tán hoặc dữ liệu mart.InnoDB
3: Công cụ này đóng vai trò là một ví dụ trong mã nguồn MySQL minh họa cách bắt đầu viết các công cụ lưu trữ mới. Nó chủ yếu được các nhà phát triển quan tâm. Động cơ lưu trữ là một cuống của người Viking không làm gì cả. Bạn có thể tạo các bảng với động cơ này, nhưng không có dữ liệu nào có thể được lưu trữ trong chúng hoặc lấy từ chúng.“stub” that does nothing. You can create tables with this engine, but no data can be stored in them or retrieved from them.
Bạn không bị hạn chế sử dụng cùng một công cụ lưu trữ cho toàn bộ máy chủ hoặc lược đồ. Bạn có thể chỉ định công cụ lưu trữ cho bất kỳ bảng. Ví dụ: một ứng dụng có thể sử dụng hầu hết các bảng InnoDB
, với một bảng CREATE TABLE
3 để xuất dữ liệu sang bảng tính và một vài bảng InnoDB
6 cho không gian làm việc tạm thời.
Chọn một công cụ lưu trữ
Các công cụ lưu trữ khác nhau được cung cấp với MySQL được thiết kế với các trường hợp sử dụng khác nhau. Bảng sau đây cung cấp một cái nhìn tổng quan về một số công cụ lưu trữ được cung cấp với MySQL, với các ghi chú làm rõ theo bảng.
Bảng & NBSP; 16.1 & NBSP; Tóm tắt các công cụ lưu trữ
Đúng | Đúng | Đúng | Không | Không |
Đúng | Đúng | Đúng | Đúng | Đúng |
Không | Không | Không | Không | Đúng |
Không | Không | Đúng | Không | Không |
Hỗ trợ cơ sở dữ liệu cụm | Không | Đúng | Đúng | Không |
Không | Phục hồi bản sao lưu/điểm trong thời gian [chú thích 1] | Đúng | Không | Đúng |
Phục hồi bản sao lưu/điểm trong thời gian [chú thích 1] | Phục hồi bản sao lưu/điểm trong thời gian [chú thích 1] | Hỗ trợ cơ sở dữ liệu cụm | Phục hồi bản sao lưu/điểm trong thời gian [chú thích 1] | Phục hồi bản sao lưu/điểm trong thời gian [chú thích 1] |
Không | Không | Đúng | Không | Phục hồi bản sao lưu/điểm trong thời gian [chú thích 1] |
Đúng | Không | Phục hồi bản sao lưu/điểm trong thời gian [chú thích 1] | Không | Không |
Đúng | Không | Đúng | Đúng | Đúng |
Đúng | Không | Phục hồi bản sao lưu/điểm trong thời gian [chú thích 1] | Không | Không |
Không | Đúng | Không | Không | Đúng |
Đúng | Phục hồi bản sao lưu/điểm trong thời gian [chú thích 1] | Đúng | Không | Đúng |
Phục hồi bản sao lưu/điểm trong thời gian [chú thích 1] | Phục hồi bản sao lưu/điểm trong thời gian [chú thích 1] | Hỗ trợ cơ sở dữ liệu cụm | Hỗ trợ cơ sở dữ liệu cụm | Hỗ trợ cơ sở dữ liệu cụm |
Không | Không | Đúng | Không | Không |
Đúng | Không | Đúng | Đúng | Đúng |
Phục hồi bản sao lưu/điểm trong thời gian [chú thích 1] | Hỗ trợ cơ sở dữ liệu cụm | Chỉ số cụm | Dữ liệu nén | Có [Lưu ý 2] |
Không | Không | Không | Không | Đúng |
Không | Không | Đúng | Không | Đúng |
Đúng | Đúng | Đúng | Đúng | Đúng |
Notes:
Hỗ trợ cơ sở dữ liệu cụm
Chỉ số cụm
Dữ liệu nén
Có [Lưu ý 2]
Bộ nhớ cache dữ liệu
N/a
Dữ liệu được mã hóa
Có [Lưu ý 3]
Có [Lưu ý 4]