Khi một cơ sở dữ liệu được tạo ra, người ta thường bỏ qua nhưng yếu tố quan trọng trong hoạt động là công cụ lưu trữ (đặc biệt là các cơ sở dữ liệu phát triển). Trong nhiều trường hợp, sự cám dỗ là chỉ cần chấp nhận các mặc định và tiếp tục phát triển các dự án của bạn. Điều này có thể dẫn đến tác động tiêu cực bất ngờ về hiệu suất, sao lưu, và toàn vẹn dữ liệu sau này trong vòng đời ứng dụng, chẳng hạn như khi đội cụ của bạn phân tích và biểu đồ MySQL.
Để tránh những cạm bẫy tiềm năng, chúng ta sẽ có một cái nhìn sâu hơn về một số các công cụ lưu trữ được sử dụng rộng rãi nhất được hỗ trợ bởi MySQL (như các phiên bản 5.7).
được hỗ trợ động cơ lưu trữ
Tùy chọn của tôi là gì?
Theo mặc định, MySQL 5.7 hỗ trợ công cụ lưu trữ mười (InnoDB, MyISAM, Memory, CSV, Lưu trữ, Blackhole, NDB, Merge, Federated, và Ví dụ). Để xem loại nào có sẵn và được hỗ trợ bởi máy chủ của bạn, sử dụng lệnh sau:
mysql> HIỂN THỊ ĐỘNG CƠ \ G
ý chí đầu ra này một danh sách các công cụ lưu trữ và cho bạn biết đó có sẵn, không có sẵn, hoặc hiện đang được thiết lập để mặc định. “Hỗ trợ”. Cột sẽ hiển thị ‘YES’, ‘NO’, hoặc ‘DEFAULT’, tương ứng
Trong một số ứng dụng, nhu cầu có thể xảy ra để có công cụ lưu trữ khác nhau cho các bảng khác nhau trong cơ sở dữ liệu tương tự. Đây là một ví dụ về lý do tại sao bạn cần phải cẩn thận lên kế hoạch mô hình dữ liệu cho các ứng dụng của bạn. Trong hầu hết các trường hợp, tuy nhiên, chỉ có một công cụ lưu trữ sẽ là cần thiết.
Khả năng Storage Engine
Điều gì là họ giỏi?
Chúng ta hãy xem xét kỹ hơn một số các công cụ lưu trữ thông dụng nhất. Điều này sẽ cho chúng ta một ý tưởng về những gì mỗi động cơ được thiết kế để làm gì và làm thế nào họ tốt nhất có thể được sử dụng để phục vụ mục tiêu kinh doanh của chúng tôi.
InnoDB: Các tùy chọn mặc định trong MySQL 5.7, InnoDB là một công cụ lưu trữ mạnh mẽ mà cung cấp:
- Full ACID tuân thủ
- Commit, rollback, và vụ tai nạn-phục hồi
- Row cấp khóa
- FOREIGN KEY ràng buộc tham chiếu-vẹn
- Tăng đa người dùng đồng thời (thông qua phi khóa đọc)
Với các chức năng trên mà InnoDB chào hàng, nó là rõ ràng lý do tại sao nó là động cơ mặc định trong MySQL. Nó là một công cụ hoạt động tốt và cung cấp rất nhiều các thuộc tính cần thiết mà bất kỳ cơ sở dữ liệu sẽ cần. Tuy nhiên, một cuộc thảo luận toàn diện về tất cả các khả năng của mình nằm ngoài phạm vi của bài viết này. Đây là động cơ mà rất có thể sẽ được sử dụng trong phần lớn các ứng dụng.
MyISAM: Các chức năng mà bộ MyISAM ngoài là khả năng của nó đối với:
- chỉ số tìm kiếm toàn văn bản
- bảng cấp khóa
- thiếu hỗ trợ cho các giao dịch
Mặc dù nó là một công cụ lưu trữ nhanh, nó là thích hợp nhất để sử dụng trong đọc nặng và hầu hết là đọc các ứng dụng như kho dữ liệu và các ứng dụng web mà không cần sự hỗ trợ giao dịch hoặc ACID tuân thủ.
NDB (Hoặc NDBCLUSTER):Nếu một môi trường nhóm là nơi cơ sở dữ liệu của bạn sẽ được làm việc, NDB là công cụ lưu trữ của sự lựa chọn. Tốt nhất là khi bạn cần:
- Distributed máy tính
- cao khả năng dự phòng
- cao tính sẵn sàng
- uptimes cao nhất có thể
Hãy lưu ý rằng sự ủng hộ cho NDB không được bao gồm trong việc phân phối của tiêu chuẩn MySQL Server 5,7 mã nhị phân. Bạn sẽ phải cập nhật cho phiên bản nhị phân mới nhất của MySQL Cluster. Mặc dù vậy, nếu bạn đang phát triển trong một môi trường cluster, bạn có thể có kinh nghiệm cần thiết để đối phó với những công việc này.
CSV: Một công cụ lưu trữ hữu ích khi nhu cầu chia sẻ dữ liệu với các ứng dụng khác mà sử dụng CSV được định dạng dữ liệu. Các bảng được lưu trữ như dấu phẩy tách ra tập tin văn bản có giá trị. Mặc dù làm cho này chia sẻ dữ liệu với các kịch bản và các ứng dụng dễ dàng hơn, một nhược điểm là các tập tin CSV không được lập chỉ mục. Vì vậy, các dữ liệu cần được lưu trữ trong một bảng InnoDB cho đến khi giai đoạn Import / Export của quá trình.
Blackhole: Động cơ này chấp nhận nhưng không lưu trữ dữ liệu. Tương tự như UNIX / dev / null, truy vấn luôn trả về một tập rỗng. Điều này có thể hữu ích trong một môi trường cơ sở dữ liệu phân tán mà bạn không muốn lưu trữ dữ liệu tại địa phương hoặc trong hoạt động hoặc thử nghiệm khác tình huống.
Lưu trữ: Cũng giống như tên gọi của nó, động cơ này là tuyệt vời cho dữ liệu lịch sử hiếm khi được tham chiếu. Các bảng không được lập chỉ mục và nén sẽ xảy ra khi chèn. Giao dịch không được hỗ trợ. Sử dụng công cụ lưu trữ này để lưu trữ và lấy dữ liệu quá khứ.
Federated: công cụ lưu trữ này là dành cho việc tạo ra một duy nhất, địa phương, cơ sở dữ liệu logic bằng cách liên kết một số máy chủ MySQL vật lý khác nhau. Không có dữ liệu được lưu trữ trên máy chủ nội bộ và truy vấn sẽ được tự động thực thi trên máy chủ từ xa tương ứng. Nó là hoàn hảo cho các môi trường mart dữ liệu phân tán và bao la có thể cải thiện hiệu suất khi sử dụng MySQL cho các báo cáo phân tích.
Chỉ định một công cụ lưu trữ
Làm thế nào để thay đổi mà lưu trữ động cơ được sử dụng?
Các công cụ lưu trữ được sử dụng được thiết lập khi tạo bảng. Như đã trình bày ở trên, InnoDB là công cụ lưu trữ mặc định trong phiên bản MySQL 5.5 và cao hơn. Nếu bạn muốn sử dụng một chương trình khác, nó là tốt nhất để làm điều này trong câu lệnh CREATE TABLE bạn. Ví dụ, giả sử rằng bạn đã xác định được một bảng mà nhu cầu sử dụng các công cụ lưu trữ CSV. quá đơn giản CREATE TABLE tuyên bố của bạn có thể trông như thế này:
mysql> CREATE TABLE Shared_Data (
-> Data_ID INTEGER NOT NULL,
-> Tên VARCHAR (50) NOT NULL,
-> Mô tả VARCHAR (150)
->) ENGINE =’CSV’;
Sau đó chúng tôi sẽ thực hiện một câu lệnh INSERT như thường lệ:
mysql> INSERT INTO Shared_Data GIÁ TRỊ
-> (1, 'thiết bị một', 'phiên bản mới nhất của công nghệ tốt nhất'),
-> (2, 'thiết bị hai', 'nhanh nhất một trên thị trường');
Sau khi thành công, nếu bạn kiểm tra thư mục cơ sở dữ liệu, có nên bây giờ là một tập tin ‘Shared_Data.CSV’ trong đó có chứa các hồ sơ bạn đã chèn vào bảng Shared_Data.
Phương pháp tương tự có thể được sử dụng cho bất kỳ một trong nhiều công cụ lưu trữ mà hỗ trợ MySQL. Mặc dù nó có thể thay đổi các công cụ lưu trữ sau khi một bảng đã được tạo ra với một ALTER TABLE
tuyên bố, đó là thực hành tốt nhất để kế hoạch cho phù hợp và thiết lập nó trong đầu.
Trong thẻ đóng
MySQL có nhiều lựa chọn
Như bạn thấy, MySQL cung cấp hỗ trợ cho các công cụ lưu trữ được thiết kế để xử lý các nhiệm vụ rất khác nhau trong nhiều môi trường khác nhau. Xác định những động cơ để sử dụng và khi nào thì sử dụng chúng có thể giúp chúng ta tránh những biến chứng không cần thiết và vấn đề hiệu suất như quy mô ứng dụng của chúng tôi.
Cho dù bạn cần 99,999% thời gian hoạt động và độ tin cậy trên cụm máy tính phân phối của bạn hoặc bạn cần ACID hỗ trợ giao dịch phù hợp với các ràng buộc FOREIGN KEY, MySQL có một công cụ lưu trữ cho phù hợp với nhu cầu của bạn.
Như mọi khi, kế hoạch phù hợp và xác định các mục tiêu dự án và yêu cầu của bạn là cách tốt nhất để xác định một cách chính xác mà công cụ lưu trữ phù hợp nhất cho các ứng dụng của bạn. Hy vọng rằng, bài viết này đóng vai trò như một điểm khởi đầu hữu ích để giúp bạn trong đó tôn trọng.
Bài viết này ban đầu xuất hiện ở đây. Tái với sự cho phép. Gửi đơn khiếu nại bản quyền của bạn ở đây.