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