Hướng dẫn mysql table types storage engines - công cụ lưu trữ các loại bảng mysql

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ữ InnoDB0 đượ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ếu InnoDB6. Để biết thêm thông tin về InnoDB, xem Chương & NBSP; 15, Công cụ lưu trữ Innodb.

  • InnoDB8: 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.

  • InnoDB9: 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 TABLE0. 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 TABLE2 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 TABLE3: 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ảng InnoDB 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 TABLE5: 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 TABLE6: 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ị Unix CREATE TABLE7. 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.

  • InnoDB0 (còn được gọi là CREATE TABLE2): 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ể.

  • InnoDB0: Cho phép MySQL DBA hoặc nhà phát triển nhóm hợp lý một loạt các bảng InnoDB8 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.

  • InnoDB2: 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.

  • InnoDB3: 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 TABLE3 để xuất dữ liệu sang bảng tính và một vài bảng InnoDB6 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ữ

Tính năngMyisamKỉ niệmInnodbLưu trữNdb
Chỉ số B-TreeĐúngĐúngĐúngKhôngKhông
Phục hồi bản sao lưu/điểm trong thời gian (chú thích 1)ĐúngĐúngĐúngĐúngĐúng
KhôngKhôngKhôngKhôngKhôngĐúng
KhôngKhôngKhôngĐúngKhôngKhô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ụmKhôngĐúngĐúngKhông
Phục hồi bản sao lưu/điểm trong thời gian (chú thích 1)KhôngPhục hồi bản sao lưu/điểm trong thời gian (chú thích 1)ĐúngKhôngĐúng
KhôngPhụ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ụmPhụ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ụmKhôngKhôngĐúngKhôngPhụ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ĐúngKhôngPhục hồi bản sao lưu/điểm trong thời gian (chú thích 1)KhôngKhông
Phục hồi bản sao lưu/điểm trong thời gian (chú thích 1)ĐúngKhôngĐúngĐúngĐúng
KhôngĐúngKhôngPhục hồi bản sao lưu/điểm trong thời gian (chú thích 1)KhôngKhông
Phục hồi bản sao lưu/điểm trong thời gian (chú thích 1)KhôngĐúngKhôngKhôngĐúng
KhôngĐúngPhục hồi bản sao lưu/điểm trong thời gian (chú thích 1)ĐúngKhôngĐúng
KhôngPhụ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ụmHỗ trợ cơ sở dữ liệu cụmHỗ trợ cơ sở dữ liệu cụm
Chỉ số cụmKhôngKhôngĐúngKhôngKhông
Phục hồi bản sao lưu/điểm trong thời gian (chú thích 1)ĐúngKhôngĐúngĐúngĐúng
KhôngPhụ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ụmChỉ số cụmDữ liệu nénCó (Lưu ý 2)
Bộ nhớ cache dữ liệuKhôngKhôngKhôngKhôngĐúng
Phục hồi bản sao lưu/điểm trong thời gian (chú thích 1)KhôngKhôngĐúngKhôngĐúng
Phục hồi bản sao lưu/điểm trong thời gian (chú thích 1)Đú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)

Các loại động cơ lưu trữ khác nhau trong MySQL là gì?

Có hai loại động cơ trong MySQL: giao dịch và không chuyển giao. Innodb là công cụ mặc định cho các phiên bản MySQL 5.5 trở lên. DBMS chính sử dụng giao diện lập trình ứng dụng (API) để cho phép tương tác của người dùng với các công cụ cơ sở dữ liệu.transactional and non-transactional. InnoDB is the default engine for MySQL 5.5 and above versions. Major DBMS uses an application programming interface(API) to enable the interaction of users with database engines.

Các loại bảng trong MySQL là gì?

Lưu ý rằng MySQL hỗ trợ hai loại bảng khác nhau: bảng an toàn giao dịch (Innodb và BDB) và các bảng an toàn không chuyển đổi (Heap, ISAM, Merge và Myisam).transaction-safe tables (InnoDB and BDB) and non-transaction-safe tables (HEAP, ISAM, MERGE, and MyISAM).

Động cơ lưu trữ nào là tốt nhất trong MySQL?

Mục đích chung..
Innodb là một công cụ lưu trữ giao dịch chung tốt, và, từ Mariadb 10.2, sự lựa chọn tốt nhất trong hầu hết các trường hợp.....
ARIA, cải tiến hiện đại hơn của MariadB trên Myisam, có một dấu chân nhỏ và cho phép sao chép dễ dàng giữa các hệ thống ..
Myisam có một dấu chân nhỏ và cho phép sao chép dễ dàng giữa các hệ thống ..

Động cơ lưu trữ MySQL nào sau đây?

MySQL: Innodb Storage Engine Innodb là một công cụ lưu trữ cho MySQL cân bằng độ tin cậy cao và hiệu suất cao.Kể từ MySQL 5.5 trở lên, đây là công cụ lưu trữ mặc định.