Công cụ lưu trữ nào tốt nhất trong MySQL cho các bảng lớn?

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 công cụ lưu trữ trong MySQL. giao dịch và phi giao dịch

Đố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. Lựa 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, Memory và CSV. Nếu bạn chưa quen với MySQL và bạn đang tìm hiểu về hệ quản trị cơ sở dữ liệu MySQL, thì đây không phải là vấn đề đáng lo ngại. Nếu bạn đang lập kế hoạch cho một cơ sở dữ liệu sản xuất, thì mọi thứ sẽ trở nên phức tạp hơn

Công cụ lưu trữ được hỗ trợ MySQL

  • InnoDB
  • MyISAM
  • Ký ức
  • CSV
  • hợp nhất
  • Lưu trữ
  • liên kết
  • Hố đen
  • Ví 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 công cụ lưu trữ tuân thủ ACID. Nó hỗ trợ khóa cấp hàng, khôi phục sự cố và kiểm soát đồng thời nhiều phiên bản. Nó là công cụ duy nhất cung cấp ràng buộc toàn vẹn tham chiếu khóa ngoại. Oracle khuyến nghị sử dụng InnoDB cho các bảng ngoại trừ các trường hợp sử dụng chuyên biệt

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

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ợ 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 khởi động lại cơ sở dữ liệu

CSV lưu trữ dữ liệu trong tệp CSV. Nó cung cấp tính linh hoạt cao vì dữ liệu ở định dạng này dễ dàng được 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. Gộp bảng giúp quản lý khối lượng dữ liệu lớn dễ dàng hơn. Nó 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 dưới dạng 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 vào. Nó không hỗ trợ giao dịch. Đó là lý tưởng để lưu trữ và truy xuất một lượng lớn dữ liệu lưu trữ, lịch sử hiếm khi đượ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 tập hợp trống. Chức năng này có thể được sử dụng trong thiết kế cơ sở dữ liệu phân tán nơi dữ liệu được sao chép tự động 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 các bài kiểm tra hiệu suất hoặc thử nghiệm khác

Công cụ lưu trữ liên kết cung cấp khả năng tách các máy chủ MySQL để tạo một cơ sở dữ liệu logic từ 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 từ xa (được liên kết). Không có dữ liệu nào được lưu trữ trên các bảng cục bộ. Nó 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ợ

Lựa chọn động cơ phù hợp

Không có công cụ lưu trữ nào 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à hoạt động kém hơn trong các tình huống khác. Có những sự đánh đổi hơn là 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; . MySQL rất linh hoạt ở chỗ 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 để 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 xử lý một số hệ thống thanh toán, chúng tôi có nghĩa vụ sử dụng giải pháp an toàn nhất. Chúng tôi không đủ khả năng để mất dữ liệu nhạy cảm như vậy. InnoDB là con đường để đi. Nếu chúng tôi muốn tìm kiếm toàn văn, thì chúng tôi có thể chọn MyISAM hoặc InnoDB. Chỉ InnoDB mới hỗ trợ ràng buộc toàn vẹn tham chiếu khóa ngoài và nếu chúng tôi dự định sử dụng ràng buộc này, thì lựa chọn là rõ ràng

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 rõ ràng công cụ lưu trữ, thì công cụ lưu trữ mặc định sẽ đượ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 sang một công cụ lưu trữ khác. Lưu ý rằng việc di chuyển một bảng 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 ta cũng có thể sử dụng câu lệnh SQL SELECT CREATE TABLE Cars.

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 có thể lưu trữ dữ liệu lớn không?

VỪA VĂN BẢN. 16.777.215 - 16 MB . can be as large as 16 MB (expressed as 2^24 -1) or 16,777,215 characters and require 3 bytes of overhead storage.

Cái nào sau đây là công cụ lưu trữ phổ biến nhất trong MySQL?

InnoDB . InnoDB là một công cụ lưu trữ cho DBMS MySQL và MariaDB. Nó là công cụ lưu trữ mặc định cho MySQL phiên bản 5. 5 và cao hơn. Nó đã thay thế MyISAM làm công cụ mặc định.

MySQL có thể xử lý các tập dữ liệu lớn không?

MySQL không được thiết kế để chạy các truy vấn phức tạp đối với khối lượng dữ liệu lớn (yêu cầu xử lý rất nhiều dữ liệu trên quy mô lớn). Trình tối ưu hóa MySQL khá hạn chế, thực hiện một truy vấn tại một thời điểm bằng một luồng duy nhất.

Công cụ MySQL nào nhanh hơn?

Tất cả các giao dịch đều chạy độc lập, nhưng bất kỳ số lượng ứng dụng nào cũng có thể ghi dữ liệu vào một bảng cùng một lúc. Về mặt truy vấn dữ liệu (CHỌN), InnoDB rõ ràng là người chiến thắng, nhưng khi nói đến việc ghi cơ sở dữ liệu (CHÈN và CẬP NHẬT), MyISAM có phần nhanh hơn .