2010-11-20 63 views
48

Tôi nhìn xung quanh và tìm thấy một số công cụ MySQL là innodb và MyISAM. Có lẽ còn ít hơn nữa. Câu hỏi của tôi là những công cụ cơ sở dữ liệu này là gì?Công cụ cơ sở dữ liệu MySQL là gì?

Sự khác biệt giữa các công cụ MySQL khác nhau là gì? Và quan trọng hơn, Làm cách nào để quyết định nên sử dụng cái nào?

+1

Liên quan: http://serverfault.com/questions/219/how-do-you-choose-a-mysql-database-engine –

Trả lời

51
mysql> SHOW ENGINES; 
+------------+---------+----------------------------------------------------------------+--------------+------+------------+ 
| Engine  | Support | Comment              | Transactions | XA | Savepoints | 
+------------+---------+----------------------------------------------------------------+--------------+------+------------+ 
| InnoDB  | YES  | Supports transactions, row-level locking, and foreign keys  | YES   | YES | YES  | 
| MRG_MYISAM | YES  | Collection of identical MyISAM tables       | NO   | NO | NO   | 
| BLACKHOLE | YES  | /dev/null storage engine (anything you write to it disappears) | NO   | NO | NO   | 
| CSV  | YES  | CSV storage engine            | NO   | NO | NO   | 
| MEMORY  | YES  | Hash based, stored in memory, useful for temporary tables  | NO   | NO | NO   | 
| FEDERATED | NO  | Federated MySQL storage engine         | NULL   | NULL | NULL  | 
| ARCHIVE | YES  | Archive storage engine           | NO   | NO | NO   | 
| MyISAM  | DEFAULT | Default engine as of MySQL 3.23 with great performance   | NO   | NO | NO   | 
+------------+---------+----------------------------------------------------------------+--------------+------+------------+ 

Cá nhân tôi luôn sử dụng InnoDB nếu tôi phải sử dụng MySQL. Nó hỗ trợ giao dịch và khóa ngoại trong khi MyISAM thì không.

31

MyISAM và InnoDB là các công cụ được sử dụng phổ biến nhất.

MyISAM nhanh hơn một chút so với InnoDB và triển khai chỉ mục FULLTEXT khá hữu ích để tích hợp khả năng tìm kiếm. MyISAM không được giao dịch và không thực hiện các ràng buộc khóa ngoại, đó là một trở ngại lớn.

Nhưng bạn có thể sử dụng tốt nhất cả hai và tạo bảng với các công cụ lưu trữ khác nhau. Một số phần mềm (WordPress, tôi nghĩ) sử dụng Inno cho hầu hết dữ liệu, như quan hệ giữa các trang, phiên bản vv. Hồ sơ cho các bài viết chứa một ID liên kết tới một bản ghi trong một bảng nội dung riêng biệt sử dụng MyISAM. Bằng cách đó, nội dung được lưu trữ trong bảng có khả năng tìm kiếm tốt nhất, trong khi hầu hết các dữ liệu khác được lưu trữ trong các bảng thực thi toàn vẹn dữ liệu.

Nếu tôi là bạn, tôi sẽ chọn Inno, vì nó là đáng tin cậy nhất. Chỉ sử dụng MyISAM cho các mục đích cụ thể nếu bạn cần.

Bạn có thể định cấu hình cơ sở dữ liệu của mình để sử dụng InnoDB theo mặc định khi tạo bảng mới.

9

Các công cụ lưu trữ khác nhau có sẵn, có một vài lý do không sử dụng các loại động cơ MyISAM hoặc InnoDB. MyISAM sẽ làm trong hầu hết các trường hợp, nhưng nếu bạn có số lượng cập nhật hoặc chèn cao hơn so với các tìm kiếm của bạn và lựa chọn thì bạn sẽ có được hiệu năng tốt hơn từ động cơ InnoDB. Để có được hiệu suất tốt nhất của InnoDB, bạn cần phải tinh chỉnh các thông số cho máy chủ của mình, nếu không thì không có lý do gì để không sử dụng nó.

Động cơ MERGE là một cách cực kỳ hiệu quả để truy vấn dữ liệu từ nhiều bảng, được xác định giống hệt nhau. Công cụ MEMORY là cách tốt nhất để thực hiện một số lượng lớn các truy vấn phức tạp trên dữ liệu sẽ không hiệu quả để tìm kiếm trên một công cụ dựa trên đĩa. Công cụ CSV là một cách tuyệt vời để xuất dữ liệu có thể được sử dụng trong các ứng dụng khác. BDB là tuyệt vời cho dữ liệu có một khóa duy nhất thường xuyên truy cập.

This Image provides an overview of some storage engines provided with MySQL:

29

Công cụ lưu trữ là thành phần MySQL xử lý hoạt động SQL cho các loại bảng khác nhau. InnoDB là mặc định (cho v5.7) và là công cụ lưu trữ đa năng nhất. Các công cụ lưu trữ MySQL bao gồm cả những công cụ xử lý các bảng an toàn giao dịch và các bảng xử lý các bảng an toàn không giao dịch.

MySQL hỗ trợ lưu trữ cơ

  1. InnoDB: InnoDB là một (ACID compliant) công cụ lưu trữ giao dịch an toàn cho MySQL có cam kết, rollback, và khả năng sụp đổ phục hồi để bảo vệ dữ liệu người dùng. Khóa cấp độ hàng của InnoDB (không leo thang tới khóa chi tiết thô hơn) và tính năng khóa nonlocking nhất quán theo phong cách Oracle lần lượt tăng khả năng đồng thời và hiệu suất của nhiều người dùng.InnoDB lưu trữ dữ liệu người dùng trong các chỉ mục nhóm để giảm I/O cho các truy vấn thông thường dựa trên các khóa chính. Để duy trì tính toàn vẹn dữ liệu, InnoDB cũng hỗ trợ các ràng buộc toàn vẹn tham chiếu KEY FOREIGN. Để biết thêm thông tin về InnoDB, xem Chương 14, Công cụ lưu trữ InnoDB.

  2. MyISAM: Các bảng này có một dấu chân nhỏ. Khóa cấp bảng giới hạn hiệu suất trong khối lượng công việc đọc/ghi, vì vậy nó thường được sử dụng trong các khối lượng công việc chỉ đọc hoặc đọc chủ yếu trong các cấu hình lưu trữ dữ liệu và Web.

  3. Memory: Lưu trữ tất cả dữ liệu trong RAM, để truy cập nhanh vào các môi trường yêu cầu tra cứu nhanh dữ liệu không quan trọng. Động cơ này trước đây được gọi là động cơ HEAP. Các ca sử dụng của nó đang giảm dần; InnoDB với vùng bộ nhớ vùng đệm của nó cung cấp một mục đích chung và có độ bền cao để giữ hầu hết hoặc tất cả dữ liệu trong bộ nhớ, và NDBCLUSTER cung cấp tra cứu khóa-giá trị nhanh cho các tập dữ liệu phân tán lớn.

  4. CSV: Bảng của nó thực sự là tệp văn bản có giá trị được phân cách bằng dấu phẩy. Bảng CSV cho phép bạn nhập hoặc kết xuất dữ liệu ở định dạng CSV, để trao đổi dữ liệu với các tập lệnh và ứng dụng đọc và ghi cùng định dạng đó. Bởi vì các bảng CSV không được lập chỉ mục, bạn thường giữ dữ liệu trong các bảng InnoDB trong hoạt động bình thường và chỉ sử dụng các bảng CSV trong giai đoạn nhập hoặc xuất.

  5. Archive: Các bảng nhỏ gọn, không lập chỉ mục này nhằm lưu trữ và truy xuất một lượng lớn thông tin kiểm tra lịch sử, lưu trữ hoặc bảo mật hiếm khi được tham chiếu.

  6. Blackhole: Công cụ lưu trữ Blackhole chấp nhận nhưng không lưu trữ dữ liệu, tương tự như thiết bị Unix/dev/null. Truy vấn luôn trả về một tập trống. Các bảng này có thể được sử dụng trong các cấu hình sao chép trong đó các câu lệnh DML được gửi tới các máy chủ nô lệ, nhưng máy chủ chủ không giữ bản sao dữ liệu của riêng nó.

  7. NDB (còn được gọi là NDBCLUSTER): Công cụ cơ sở dữ liệu phân cụm này đặc biệt phù hợp cho các ứng dụng yêu cầu mức độ cao nhất có thể về thời gian hoạt động và tính khả dụng.

  8. Merge: Cho phép nhà quản trị hoặc nhà phát triển MySQL nhóm logic 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 VLDB như kho dữ liệu.

  9. Federated: Cung cấp khả năng liên kết các máy chủ MySQL riêng biệt để tạo một cơ sở dữ liệu lôgic từ nhiều máy chủ vật lý. Rất tốt cho môi trường phân phối hoặc dữ liệu mart.

  10. Example: Công cụ này đóng vai trò là ví dụ trong mã nguồn MySQL minh họa cách bắt đầu viết các công cụ lưu trữ mới. Đó là chủ yếu quan tâm đến các nhà phát triển. Các công cụ lưu trữ là một "sơ khai" mà không có gì. Bạn có thể tạo các bảng với công cụ này, nhưng không có dữ liệu nào có thể được lưu trữ trong chúng hoặc được lấy ra từ chúng.

Bạn không bị giới hạn sử dụng cùng một công cụ lưu trữ cho toàn bộ máy chủ hoặc lược đồ. Bạn có thể chỉ định công cụ lưu trữ cho bất kỳ bảng nào. Ví dụ, một ứng dụng có thể sử dụng chủ yếu là các bảng InnoDB, với một bảng CSV để xuất dữ liệu vào một bảng tính và một vài bảng MEMORY cho các vùng làm việc tạm thời.

tham khảo: 12

enter image description here

+0

Để có phiên bản mới hơn của câu trả lời này, vui lòng tham khảo trang nơi nó được sao chép từ: http://dev.mysql.com/doc/refman/5.7/en/storage-engines.html – GolezTrol

1

có thể bạn sẽ nhận được thông tin thêm ở đây: https://en.wikipedia.org/wiki/Database_engine

Một 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 rằng một 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 (CRUD) dữ liệu từ một cơ sở dữ liệu. Hầu hết các hệ thống quản lý cơ sở dữ liệu bao gồm giao diện lập trình ứng dụng (API) riêng cho phép người dùng tương tác với công cụ cơ bản của họ mà không phải trải qua giao diện người dùng của DBMS.

2

Công cụ lưu trữ là 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à không 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. Chọn đúng công cụ lưu trữ 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 mới sử dụng 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à vấn đề đáng lo ngại. Nếu bạn đang lập kế hoạch một cơ sở dữ liệu sản xuất, thì mọi thứ trở nên phức tạp hơn. Bạn có thể đọc thêm tại đây: http://zetcode.com/databases/mysqltutorial/storageengines/

Các vấn đề liên quan