Các loại công cụ lưu trữ MySQL

Hai công cụ cơ sở dữ liệu MySQL phổ biến và phổ biến nhất là MyISAM và InnoDB. MyISAM là công cụ mặc định cho MySQL cho các phiên bản trước 5. 5. 5 và hoạt động tốt trong hầu hết các tình huống. Tuy nhiên, tùy thuộc vào nhu cầu của bạn, có những tình huống mà một công cụ cơ sở dữ liệu khác, chẳng hạn như InnoDB, có thể là lựa chọn tốt hơn. Ví dụ: InnoDB hỗ trợ các giao dịch, trong khi MyISAM thì không. InnoDB cũng cung cấp hỗ trợ cho khóa ngoại, trong khi MyISAM thì không

Nếu bạn có quyền truy cập root vào máy chủ của mình, bạn có toàn quyền kiểm soát cách thức và thời điểm MySQL sử dụng các công cụ cơ sở dữ liệu khác nhau. Bạn có thể thay đổi công cụ cơ sở dữ liệu mặc định, thay đổi công cụ cơ sở dữ liệu của một bảng cụ thể, v.v.

Bài viết này giả định rằng bạn đã biết cách truy cập MySQL từ dòng lệnh bằng chương trình mysql. Nếu bạn chưa biết cách thực hiện, vui lòng đọc bài viết này trước

Xác định công cụ cơ sở dữ liệu mặc định

Để xác định công cụ cơ sở dữ liệu mặc định cho cài đặt của bạn, hãy nhập lệnh sau tại dấu nhắc mysql>

SHOW ENGINES;

Một danh sách các công cụ được hỗ trợ xuất hiện, cùng với mô tả ngắn gọn và các tính năng được hỗ trợ cho từng công cụ. Công cụ cơ sở dữ liệu mặc định được đánh dấu MẶC ĐỊNH trong cột Hỗ trợ

Thay đổi công cụ cơ sở dữ liệu mặc định

Bạn có thể thay đổi công cụ cơ sở dữ liệu mặc định cho cài đặt MySQL của mình. Sau khi bạn làm điều này, tất cả các bảng mới mà bạn tạo sẽ sử dụng công cụ cơ sở dữ liệu mới (trừ khi bạn đặt công cụ này một cách rõ ràng trong khi tạo bảng)

Để thay đổi công cụ cơ sở dữ liệu mặc định, hãy làm theo các bước sau

  1. Sử dụng trình soạn thảo văn bản ưa thích của bạn để mở my. cnf trên máy chủ của bạn. Vị trí của tôi. cnf tùy thuộc vào bản phân phối Linux của bạn
    • Trên CentOS và Fedora, my. tệp cnf nằm trong thư mục /etc
    • Trên Debian và Ubuntu, my. tệp cnf nằm trong thư mục /etc/mysql
  2. trong tôi. cnf, tìm phần [mysqld]
  3. Thêm hoặc sửa đổi dòng sau trong phần [mysqld]. Thay thế ENGINE bằng tên của động cơ mà bạn muốn sử dụng làm mặc định

    default-storage-engine=ENGINE

    Nếu bạn đang bật công cụ cơ sở dữ liệu InnoDB, tùy thuộc vào bản phân phối Linux của bạn, bạn có thể phải tắt dòng sau trong tệp my. tập tin cnf

    skip-innodb

    Để làm điều này, chỉ cần thêm dấu thăng (#) vào đầu dòng, như sau

    #skip-innodb

  4. Lưu các thay đổi vào thư mục của tôi. cnf, rồi thoát khỏi trình soạn thảo văn bản
  5. Khởi động lại máy chủ MySQL bằng lệnh thích hợp cho bản phân phối Linux của bạn

    • Đối với CentOS và Fedora, hãy nhập.
      service mysqld restart
    • Đối với Debian và Ubuntu, gõ

      service mysql restart
  6. Để xác nhận công cụ cơ sở dữ liệu mặc định mới, hãy sử dụng câu lệnh SQL SHOW ENGINES như được mô tả trong phần Xác định công cụ cơ sở dữ liệu mặc định

Xác định công cụ cơ sở dữ liệu hiện tại của bảng

Để xác định bảng cơ sở dữ liệu hiện đang sử dụng công cụ nào, hãy nhập lệnh sau tại dấu nhắc mysql>. Thay thế cơ sở dữ liệu bằng tên của cơ sở dữ liệu mà bạn muốn kiểm tra

SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES where TABLE_SCHEMA = 'database';

Lệnh này hiển thị danh sách mọi bảng trong cơ sở dữ liệu, cùng với công cụ mà mỗi bảng đang sử dụng

Thay đổi công cụ cơ sở dữ liệu của bảng

Bạn có thể thay đổi công cụ cơ sở dữ liệu cho một bảng đã tồn tại. Ví dụ: câu lệnh SQL sau đây cho biết cách sửa đổi bảng có tên myTable để sử dụng công cụ InnoDB

ALTER TABLE myTable ENGINE = InnoDB;

Tạo một bảng mới với một công cụ cơ sở dữ liệu cụ thể

Khi bạn tạo một bảng trong cơ sở dữ liệu, bạn có thể đặt rõ ràng công cụ cơ sở dữ liệu của nó (nếu không, MySQL sử dụng công cụ cơ sở dữ liệu mặc định trong quá trình tạo bảng). Ví dụ: câu lệnh SQL sau đây cho biết cách tạo bảng có tên myTable sử dụng công cụ cơ sở dữ liệu MyISAM

________số 8

Tương tự, để tạo một bảng sử dụng công cụ cơ sở dữ liệu InnoDB, bạn có thể sử dụng câu lệnh SQL sau

Tóm lược. trong hướng dẫn này, bạn sẽ tìm hiểu các công cụ lưu trữ MySQL khác nhau hoặc các loại bảng. Điều cần thiết là phải hiểu các tính năng của từng công cụ lưu trữ trong MySQL để bạn có thể sử dụng chúng một cách hiệu quả nhằm tối đa hóa hiệu suất của cơ sở dữ liệu của bạn

MySQL cung cấp các công cụ lưu trữ khác nhau cho các bảng của nó như sau

  • MyISAM
  • InnoDB
  • HỢP NHẤT
  • BỘ NHỚ (HEAP)
  • LƯU TRỮ
  • CSV
  • LIÊN BANG

Mỗi công cụ lưu trữ có ưu điểm và nhược điểm riêng. Điều quan trọng là phải hiểu từng tính năng của công cụ lưu trữ và chọn tính năng phù hợp nhất cho các bảng của bạn để tối đa hóa hiệu suất của cơ sở dữ liệu. Trong các phần sau, chúng tôi sẽ thảo luận về từng công cụ lưu trữ và các tính năng của nó để bạn có thể quyết định nên sử dụng công cụ lưu trữ nào

MyISAM

MyISAM mở rộng công cụ lưu trữ ISAM cũ. Các bảng MyISAM được tối ưu hóa để nén và tốc độ. Các bảng MyISAM cũng có thể di động giữa các nền tảng và hệ điều hành

Kích thước của bảng MyISAM có thể lên tới 256TB, rất lớn. Ngoài ra, các bảng MyISAM có thể được nén thành các bảng chỉ đọc để tiết kiệm dung lượng. Khi khởi động, MySQL kiểm tra các bảng MyISAM xem có bị hỏng không và thậm chí sửa chữa chúng trong trường hợp có lỗi. Các bảng MyISAM không an toàn cho giao dịch

Trước phiên bản MySQL 5. 5, MyISAM là công cụ lưu trữ mặc định khi bạn tạo bảng mà không chỉ định rõ ràng công cụ lưu trữ. Từ phiên bản 5. 5, MySQL sử dụng InnoDB làm công cụ lưu trữ mặc định

InnoDB

Các bảng InnoDB hỗ trợ đầy đủ các giao dịch và tuân thủ ACID. Chúng cũng tối ưu cho hiệu suất. Bảng InnoDB hỗ trợ các thao tác khóa ngoại, cam kết, khôi phục, khôi phục. Kích thước của bảng InnoDB có thể lên tới 64TB

Giống như MyISAM, các bảng InnoDB có thể di động giữa các nền tảng và hệ điều hành khác nhau. MySQL cũng kiểm tra và sửa chữa các bảng InnoDB, nếu cần, khi khởi động

HỢP NHẤT

Bảng HỢP NHẤT là một bảng ảo kết hợp nhiều bảng MyISAM có cấu trúc tương tự như một bảng. Công cụ lưu trữ MERGE còn được gọi là công cụ MRG_MyISAM. Bảng

default-storage-engine=ENGINE
0 không có chỉ mục riêng;

Bằng cách sử dụng bảng HỢP NHẤT, bạn có thể tăng tốc hiệu suất khi tham gia nhiều bảng. MySQL chỉ cho phép bạn thực hiện các thao tác CHỌN, XÓA, CẬP NHẬT và CHÈN trên bảng

default-storage-engine=ENGINE
0. Nếu bạn sử dụng câu lệnh
default-storage-engine=ENGINE
2 trên bảng
default-storage-engine=ENGINE
0, thì chỉ thông số kỹ thuật của
default-storage-engine=ENGINE
0 sẽ bị xóa. Các bảng bên dưới sẽ không bị ảnh hưởng

Trí nhớ

Các bảng bộ nhớ được lưu trữ trong bộ nhớ và sử dụng các chỉ mục băm để chúng nhanh hơn các bảng MyISAM. Thời gian tồn tại của dữ liệu của các bảng bộ nhớ phụ thuộc vào thời gian hoạt động của máy chủ cơ sở dữ liệu. Công cụ lưu trữ bộ nhớ trước đây được gọi là HEAP

Lưu trữ

Công cụ lưu trữ lưu trữ cho phép bạn lưu trữ một số lượng lớn các bản ghi, với mục đích lưu trữ, thành định dạng nén để tiết kiệm dung lượng ổ đĩa. Công cụ lưu trữ lưu trữ nén một bản ghi khi nó được chèn vào và giải nén nó bằng thư viện zlib khi nó được đọc

Các bảng lưu trữ chỉ cho phép các câu lệnh INSERT và SELECT. Các bảng

default-storage-engine=ENGINE
5 không hỗ trợ các chỉ mục, do đó, cần phải quét toàn bộ bảng để đọc các hàng

CSV

Công cụ lưu trữ CSV lưu trữ dữ liệu ở định dạng tệp giá trị được phân tách bằng dấu phẩy (CSV). Bảng CSV mang đến một cách thuận tiện để di chuyển dữ liệu vào các ứng dụng không phải SQL, chẳng hạn như phần mềm bảng tính

Bảng CSV không hỗ trợ kiểu dữ liệu NULL. Ngoài ra, thao tác đọc yêu cầu quét toàn bộ bảng

LIÊN BANG

Công cụ lưu trữ

default-storage-engine=ENGINE
6 cho phép bạn quản lý dữ liệu từ máy chủ MySQL từ xa mà không cần sử dụng công nghệ sao chép hoặc cụm. Bảng liên kết cục bộ không lưu trữ dữ liệu. Khi bạn truy vấn dữ liệu từ một bảng liên kết cục bộ, dữ liệu sẽ tự động được lấy từ các bảng liên kết từ xa

Chọn các loại bảng MySQL

Bạn có thể tải xuống danh sách kiểm tra sau để chọn công cụ lưu trữ hoặc loại bảng phù hợp nhất, dựa trên các tiêu chí khác nhau

Công cụ lưu trữ nào được sử dụng trong MySQL?

Công cụ lưu trữ là các thành phần MySQL xử lý các thao tác SQL cho các loại bảng khác nhau. InnoDB là công cụ lưu trữ mặc định và có mục đích chung nhất và Oracle khuyên bạn nên sử dụng nó cho các bảng ngoại trừ các trường hợp sử dụng chuyên biệt. (Câu lệnh CREATE TABLE trong MySQL 8. 0 tạo các bảng InnoDB theo mặc định. )

Tôi nên sử dụng InnoDB hay MyISAM?

Sự khác biệt chính giữa MyISAM và InnoDB . Công cụ MyISAM không tốt lắm trong việc lưu trữ lượng lớn dữ liệu, bởi vì nó lưu trữ mọi thứ trong một bảng. If you need to store large amounts of data or ensure that transactions will work correctly, choose InnoDB. The MyISAM engine is not very good at storing large amounts of data, because it stores everything in a single table.

MariaDB và InnoDB là gì?

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. Nó là công cụ lưu trữ mặc định từ MariaDB 10. 2. Đối với các bản phát hành trước đó, XtraDB là một nhánh nâng cao hiệu suất của InnoDB và thường được ưu tiên.

InnoDB và MariaDB có giống nhau không?

InnoDB là công cụ lưu trữ đa năng và là công cụ mặc định trong MariaDB .