1. STORAGE ENGINE LÀ GÌ
1 database engine (hay storage engine) là 1 thành phần phần mềm nằm bên dưới mà 1 hệ quản trị cơ sở dữ liệu (Database management system – DBMS) dùng để tạo, đọc, cập nhật và xóa (CRUD) dữ liệu từ 1 cơ sở dữ liệu (CSDL). Đa số các DBMS cung cấp các API cho phép người dùng tương tác với những engine này mà không cần qua giao diện người dùng của DBMS.
Nhiều DBMS hiện đại hỗ trợ nhiều storage engine trong cùng 1 CSDL.
2. CÁC STORAGE ENGINE TRONG MYSQL
MySQL hỗ trợ nhiều storage engine dùng để xử lý các loại bảng khác nhau. Bao gồm các engine hỗ trợ giao dịch và các engine không hỗ trợ giao dịch.
Từ phiên bản 5.1, máy chủ MySQL sử dụng kiến trúc pluggable storage engine cho phép các storage engine được nạp vào và gỡ bỏ khỏi 1 máy chủ MySQL đang chạy.
Trước phiên bản MySQL 5.1.38, kiến trúc này chỉ hỗ trợ cho các nền tảng Unix.
Để xác định những storage engine được hỗ trợ bởi máy chủ, sử dụng khai báo SHOW ENGINES như sau:
Code: Select all
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
*************************** 3. row ***************************
Engine: MyISAM
Support: YES
Comment: MyISAM storage engine
Transactions: NO
XA: NO
Savepoints: NO
*************************** 4. row ***************************
Engine: BLACKHOLE
Support: YES
Comment: /dev/null storage engine (anything you write to it disappears)
Transactions: NO
XA: NO
Savepoints: NO
*************************** 5. row ***************************
Engine: MEMORY
Support: YES
Comment: Hash based, stored in memory, useful for temporary tables
Transactions: NO
XA: NO
Savepoints: NO
*************************** 6. row ***************************
Engine: FEDERATED
Support: NO
Comment: Federated MySQL storage engine
Transactions: NULL
XA: NULL
Savepoints: NULL
*************************** 7. row ***************************
Engine: ARCHIVE
Support: YES
Comment: Archive storage engine
Transactions: NO
XA: NO
Savepoints: NO
*************************** 8. row ***************************
Engine: MRG_MYISAM
Support: YES
Comment: Collection of identical MyISAM tables
Transactions: NO
XA: NO
Savepoints: NO
*************************** 9. row ***************************
Engine: PERFORMANCE_SCHEMA
Support: YES
Comment: Performance Schema
Transactions: NO
XA: NO
Savepoints: NO
9 rows in set (0.00 sec)
- MyISAM: storage engine mặc định của MySQL và được sử dụng nhiều nhất trên Web, kho dữ liệu và các môi trường ứng dụng khác. MyISAM được hỗ trợ trong tất cả cấu hình của MySQL, và là engine mặc định trừ khi chúng ta cấu hình MySQL sử dụng engine khác.
- InnoDB: là storage engine hỗ trợ giao dịch của MySQL, có các chức năng commit, rollback, và phục hỗi lỗi để bảo vệ dữ liệu người dùng. InnoDB khóa dữ liệu theo từng dòng khi ghi, cập nhật, xóa và không khóa dữ liệu khi đọc, việc này giúp tăng số lượng người sử dụng đồng thời và tăng hiệu năng. InnoDB lưu trữ dữ liệu người dùng trong các chỉ mục dưới dạng cluster để giảm I/O cho các truy vấn chung dựa trên khóa chính. Để duy trì toàn vẹn dữ liệu, InnoDB cũng hỗ trợ khóa ngoại FOREIGN KEY cho các ràng buộc tham chiếu toàn vẹn.
- Memory: Lưu trữ tất cả dữ liệu trong RAM, cho việc truy cập cực nhanh trong môi trường đòi hỏi các tra cứu tham chiếu nhanh. Engine này trước đây có tên là HEAP engine.
- Merge: Cho phép người quản trị CSDL MySQL hay người phát triển nhóm 1 loạt các bảng MyISAM giống hệt nhau và tham chiếu chúng như 1 đối tượng.
- Archive: cung cấp giải pháp hoàn hảo cho việc lưu trữ và lấy những lượng lớn thông tin lịch sử, lưu trữ, hay kiểm toán an ninh hiếm khi được tham chiếu.
- Federated: cung cấp khả năng liên kết các máy chủ MySQL riêng biệt để tạo ra 1 CSDL luận lý từ nhiều máy chủ vật lý. Rất tốt cho các môi trường phân tán.
- NDB (hay được biết như là NDBCLUSTER) – engine CSDL theo cluster này đặc biệt phù hợp cho các ứng dụng yêu cầu thời gian hoạt động và tính sẵn sàng cao.
- CSV: Lưu trữ dữ liệu trong các tập tin văn bản trong đó các giá trị được phân tách bởi dấu phẩy. Chúng ta có thể sử dụng engine CSV để dễ dàng trao đổi dữ liệu giữa các phần mềm và ứng dụng khác mà có thể nhập và xuất theo định dạng CSV.
- Blackhole: engine này chấp nhận nhưng không lưu trữ dữ liệu và việc lấy dữ liệu luôn trả về 1 tập rỗng. Chức năng này có thể được dùng trong thiết kế CSDL phân tán nơi dữ liệu được nhân bản tự động, nhưng không được lưu trữ cục bộ.
- Example: engine này không làm gì cả. Chúng ta có thể tạo 1 bảng với engine này, nhưng không có dữ liệu nào được lưu trữ trong nó hay được lấy ra từ nó. Mục đích của engine này là để phục vụ như 1 ví dụ trong mã nguồn MySQL mô tả làm sao để viết 1 storage engine mới.
[Sưu tầm] từ http://www.justpassion.net/