Hướng dẫn what are the different types of storage engines in mysql? - các loại công cụ lưu trữ khác nhau trong mysql là gì?

Nội dung trước tiếp theo

Sửa đổi lần cuối ngày 10 tháng 7 năm 2020

Trong chương này, chúng ta sẽ nói về các công cụ lưu trữ MySQL.

Công cụ lưu trữ là một mô -đun phần mềm mà hệ thống quản lý cơ sở dữ liệu sử dụng để tạo, đọc, cập nhật dữ liệu từ cơ sở dữ liệu. Có hai loại động cơ lưu trữ trong MySQL: giao dịch và không chuyển giao.

Đối với MySQL 5.5 trở lên, công cụ lưu trữ mặc định là Innodb. Công cụ lưu trữ mặc định cho MySQL trước phiên bản 5.5 là Myisam. Chọn công cụ lưu trữ phù hợp là một quyết định chiến lược quan trọng, sẽ ảnh hưởng đến sự phát triển trong tương lai. Trong hướng dẫn này, chúng tôi sẽ sử dụng các công cụ lưu trữ Myisam, Innodb, bộ nhớ và CSV. Nếu bạn chưa quen với MySQL và bạn đang nghiên cứu hệ thống quản lý cơ sở dữ liệu MySQL, thì đây không phải là một mối quan tâm. Nếu bạn đang lên kế hoạch cho một cơ sở dữ liệu sản xuất, thì mọi thứ trở nên phức tạp hơn.

Danh sách các công cụ lưu trữ

MYSQL Các công cụ lưu trữ được hỗ trợ:

  • Innodb
  • Myisam
  • Kỉ niệm
  • CSV
  • Hợp nhất
  • Lưu trữ
  • Liên kết
  • Hố đen
  • Thí dụ

Innodb là công cụ lưu trữ được sử dụng rộng rãi nhất với hỗ trợ giao dịch. Nó là một động cơ lưu trữ tuân thủ axit. Nó hỗ trợ khóa cấp độ hàng, phục hồi sự cố và điều khiển đồng thời đa phiên bản. Đây là động cơ duy nhất cung cấp ràng buộc toàn vẹn tham chiếu của nước ngoài. Oracle khuyên bạn nên sử dụng InnoDB cho các bảng ngoại trừ các trường hợp sử dụng chuyên ngành.

Myisam là công cụ lưu trữ ban đầu. Nó là một động cơ lưu trữ nhanh. Nó không hỗ trợ các giao dịch. Myisam cung cấp khóa cấp bảng. Nó được sử dụng chủ yếu trong kho dữ liệu và web.

Công cụ lưu trữ bộ nhớ tạo các bảng trong bộ nhớ. Nó là động cơ nhanh nhất. Nó cung cấp khóa cấp bảng. Nó không hỗ trợ các giao dịch. Công cụ lưu trữ bộ nhớ là lý tưởng để tạo bảng tạm thời hoặc tra cứu nhanh. Dữ liệu bị mất khi cơ sở dữ liệu được khởi động lại.

CSV lưu trữ dữ liệu trong các tệp CSV. Nó cung cấp sự linh hoạt tuyệt vời vì dữ liệu ở định dạng này dễ dàng tích hợp vào các ứng dụng khác.

Hợp nhất hoạt động trên các bảng Myisam bên dưới. Hợp nhất bảng giúp quản lý khối lượng lớn dữ liệu dễ dàng hơn. Nó một cách hợp lý nhóm một loạt các bảng Myisam giống hệt nhau và tham chiếu chúng là một đối tượng. Tốt cho môi trường kho dữ liệu.

Công cụ lưu trữ lưu trữ được tối ưu hóa để chèn tốc độ cao. Nó nén dữ liệu khi nó được chèn. Nó không hỗ trợ các giao dịch. Đó là lý tưởng để lưu trữ và truy xuất một lượng lớn dữ liệu lịch sử, lưu trữ lịch sử được tham chiếu.

Công cụ lưu trữ blackhole chấp nhận nhưng không lưu trữ dữ liệu. Truy xuất luôn trả về một bộ trống. Chức năng có thể được sử dụng trong thiết kế cơ sở dữ liệu phân tán trong đó dữ liệu được tự động sao chép, nhưng không được lưu trữ cục bộ. Công cụ lưu trữ này có thể được sử dụng để thực hiện kiểm tra hiệu suất hoặc thử nghiệm khác.

Công cụ lưu trữ Federated cung cấp khả năng tách các máy chủ MySQL để tạo một cơ sở dữ liệu logic khỏi nhiều máy chủ vật lý. Các truy vấn trên máy chủ cục bộ được tự động thực hiện trên các bảng điều khiển từ xa (được liên kết). Không có dữ liệu được lưu trữ trên các bảng cục bộ. Nó là tốt cho môi trường phân tán.

mysql> SHOW ENGINES\G
*************************** 1. row ***************************
      Engine: InnoDB
     Support: DEFAULT
     Comment: Supports transactions, row-level locking, and foreign keys
Transactions: YES
          XA: YES
  Savepoints: YES
*************************** 2. row ***************************
      Engine: CSV
     Support: YES
     Comment: CSV storage engine
Transactions: NO
          XA: NO
  Savepoints: NO
...

Lệnh SHOW ENGINES hiển thị tất cả các công cụ có sẵn mà máy chủ hỗ trợ.

Chọn đúng động cơ

Không có công cụ lưu trữ là lý tưởng cho mọi trường hợp. Một số hoạt động tốt nhất trong một số điều kiện nhất định và thực hiện tồi tệ hơn trong các tình huống khác. Có sự đánh đổi hơn phải được xem xét. Một giải pháp an toàn hơn cần nhiều tài nguyên hơn; Nó có thể chậm hơn, mất nhiều thời gian CPU hơn và không gian đĩa. MySQL rất linh hoạt trong thực tế là nó cung cấp một số công cụ lưu trữ khác nhau. Một số trong số chúng, như công cụ lưu trữ, được tạo ra để được sử dụng trong các tình huống cụ thể.

Trong một số trường hợp, câu trả lời là rõ ràng. Bất cứ khi nào chúng tôi giao dịch với một số hệ thống thanh toán, chúng tôi có nghĩa vụ phải sử dụng giải pháp an toàn nhất. Chúng tôi không thể đủ khả năng để mất dữ liệu nhạy cảm như vậy. Innodb là con đường để đi. Nếu chúng ta muốn tìm kiếm toàn văn, thì chúng ta có thể chọn MyIsam hoặc Innodb .. Chỉ InnoDB hỗ trợ ràng buộc toàn vẹn tham chiếu khóa nước ngoài và nếu chúng ta có kế hoạch sử dụng ràng buộc này, thì lựa chọn này là rõ ràng.

Chỉ định và thay đổi công cụ lưu trữ

Công cụ lưu trữ được chỉ định tại thời điểm tạo bảng.

mysql> CREATE TABLE Cars(Id INTEGER PRIMARY KEY, Name VARCHAR(50), 
    -> Cost INTEGER) ENGINE='MyISAM';

Từ khóa ENGINE chỉ định công cụ lưu trữ được sử dụng cho bảng cụ thể này.

Nếu chúng tôi không chỉ định công cụ lưu trữ rõ ràng, thì công cụ lưu trữ mặc định được sử dụng. Trước MySQL 5.5, công cụ lưu trữ mặc định là myisam. Đối với MySQL 5.5 trở lên, công cụ lưu trữ mặc định là Innodb.

Có thể di chuyển đến một công cụ lưu trữ khác. Lưu ý rằng việc di chuyển một bàn lớn có thể mất nhiều thời gian. Ngoài ra, chúng tôi có thể gặp một số vấn đề khi di chuyển bảng. Một số tính năng có thể không được hỗ trợ trong cả hai bảng.

mysql> SELECT ENGINE FROM information_schema.TABLES
    -> WHERE TABLE_SCHEMA='mydb'
    -> AND TABLE_NAME='Cars';
+--------+
| ENGINE |
+--------+
| InnoDB |
+--------+
1 row in set (0,05 sec)

Câu lệnh SQL này tìm ra công cụ lưu trữ được sử dụng cho bảng Cars trong cơ sở dữ liệu mydb. Chúng tôi cũng có thể sử dụng câu lệnh SELECT CREATE TABLE Cars SQL.

mysql> CREATE TABLE Cars(Id INTEGER PRIMARY KEY, Name VARCHAR(50), 
    -> Cost INTEGER) ENGINE='MyISAM';
0 là một bảng lưu trữ thông tin kỹ thuật về các bảng của chúng tôi.

mysql> ALTER TABLE Cars ENGINE='MyISAM';

Câu lệnh SQL này thay đổi công cụ lưu trữ của bảng Cars thành myisam.

mysql> SELECT ENGINE FROM information_schema.TABLES
    -> WHERE TABLE_SCHEMA='mydb'
    -> AND TABLE_NAME='Cars';
+--------+
| ENGINE |
+--------+
| MyISAM |
+--------+
1 row in set (0,00 sec)

Bây giờ động cơ lưu trữ của bảng là myisam.

Trong phần này của hướng dẫn MySQL, chúng tôi đã bao phủ các công cụ lưu trữ.

Nội dung trước tiếp theo

Động cơ lưu trữ nào tốt nhất trong 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. .InnoDB is the default and most general-purpose storage engine, and Oracle recommends using it for tables except for specialized use cases. (The CREATE TABLE statement in MySQL 8.0 creates InnoDB tables by default.)

Động cơ lưu trữ trong MySQL ở đâu?

Phát hành tuyên bố của công cụ chương trình để xem các công cụ lưu trữ MySQL có sẵn.Tìm kiếm mặc định trong cột hỗ trợ.mysql> hiển thị động cơ;Ngoài ra, truy vấn thông tin_schema.. Look for DEFAULT in the SUPPORT column. mysql> SHOW ENGINES; Alternatively, query the INFORMATION_SCHEMA.

Công cụ lưu trữ trong DBMS là gì?

Một công cụ cơ sở dữ liệu (hoặc công cụ lưu trữ) là thành phần phần mềm cơ bản mà Hệ thống quản lý cơ sở dữ liệu (DBMS) sử dụng để tạo, đọc, cập nhật và xóa dữ liệu (CRUD) khỏi cơ sở dữ liệu.the underlying software component that a database management system (DBMS) uses to create, read, update and delete (CRUD) data from a database.

Các công cụ tìm kiếm trong MySQL là gì?

Giới thiệu về động cơ cơ sở dữ liệu 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 sớm hơn 5,5.MyISAM and InnoDB. MyISAM is the default engine for MySQL for versions earlier than 5.5.