Các loại bảng MySQL Công cụ lưu trữ

Là một nhà phát triển MySQL, ít nhất bạn nên biết rằng MySQL hỗ trợ một số định dạng cơ sở dữ liệu. Tìm hiểu xem mỗi thứ tốt cho việc gì và bạn sử dụng chúng như thế nào

Điều gì sẽ xảy ra nếu bạn là một người lái xe đua và có thể hoán đổi động cơ chỉ bằng một nút gạt thay vì phải đến ga ra?

Công cụ chứng khoán MySQL chắc chắn là phù hợp, nhưng có những trường hợp mà các công cụ có sẵn khác có thể phù hợp hơn với nhiệm vụ hiện tại. Nếu muốn, bạn thậm chí có thể khoan các xi-lanh và đập vào bộ chế hòa khí bốn thùng bằng cách xây dựng công cụ cơ sở dữ liệu của riêng bạn bằng cách sử dụng MySQL++ API. Hãy xem cách bạn chọn động cơ và cách thay đổi giữa các động cơ có sẵn cho bạn

Chọn động cơ của bạn
Số lượng công cụ cơ sở dữ liệu có sẵn cho bạn tùy thuộc vào cách cài đặt MySQL của bạn được biên dịch. Để thêm một công cụ mới, MySQL phải được biên dịch lại. Khái niệm biên dịch một ứng dụng chỉ để thêm một tính năng có vẻ kỳ lạ đối với các nhà phát triển Windows, nhưng trong thế giới UNIX, đó là tiêu chuẩn. Theo mặc định, MySQL hỗ trợ ba công cụ cơ sở dữ liệu. ISAM, MyISAM và HEAP. Hai loại khác, InnoDB và Berkley (BDB), cũng thường có sẵn

ISAM
ISAM là một phương pháp quản lý bảng dữ liệu được xác định rõ ràng, đã được thử nghiệm theo thời gian, được thiết kế với ý tưởng rằng một cơ sở dữ liệu sẽ được truy vấn thường xuyên hơn nhiều so với việc nó sẽ được cập nhật. Do đó, ISAM thực hiện các thao tác đọc rất nhanh và rất dễ dàng về bộ nhớ và tài nguyên lưu trữ. Hai nhược điểm chính của ISAM là nó không hỗ trợ các giao dịch và không có khả năng chịu lỗi. Nếu ổ cứng của bạn bị hỏng, các tệp dữ liệu sẽ không thể khôi phục được. Nếu bạn đang sử dụng ISAM trong một ứng dụng quan trọng, bạn sẽ muốn có một điều khoản để sao lưu liên tục tất cả dữ liệu trực tiếp của mình, một thứ mà MySQL hỗ trợ thông qua các tính năng sao chép có khả năng của nó

MyISAM
MyISAM là định dạng ISAM mở rộng của MySQL và công cụ cơ sở dữ liệu mặc định. Ngoài việc cung cấp một số chức năng lập chỉ mục và quản lý trường không có trong ISAM, MyISAM sử dụng cơ chế khóa bảng để tối ưu hóa nhiều lần đọc và ghi đồng thời. Sự đánh đổi là thỉnh thoảng bạn cần chạy lệnh OPTIMIZE TABLE để khôi phục dung lượng bị lãng phí bởi các thuật toán cập nhật. MyISAM cũng có một số tiện ích mở rộng hữu ích như tiện ích MyISAMChk để sửa các tệp cơ sở dữ liệu và tiện ích MyISAMPack để khôi phục dung lượng bị lãng phí

MyISAM, với sự nhấn mạnh vào các thao tác đọc nhanh, có lẽ là lý do chính khiến MySQL trở nên phổ biến để phát triển Web, nơi mà phần lớn các thao tác dữ liệu mà bạn sẽ thực hiện là các thao tác đọc. Do đó, hầu hết các công ty lưu trữ và Nhà cung cấp dịch vụ hiện diện Internet (IPP) sẽ chỉ cho phép sử dụng định dạng MyISAM

đống
HEAP cho phép các bảng tạm thời chỉ nằm trong bộ nhớ. Nằm trong bộ nhớ giúp HEAP nhanh hơn ISAM hoặc MyISAM, nhưng dữ liệu do nó quản lý không ổn định và sẽ bị mất nếu không được lưu trước khi tắt máy. HEAP cũng không lãng phí nhiều dung lượng khi các hàng bị xóa. Các bảng HEAP rất hữu ích trong các tình huống mà bạn có thể sử dụng câu lệnh SELECT lồng nhau để chọn và thao tác dữ liệu. Chỉ cần nhớ phá hủy cái bàn sau khi bạn hoàn thành nó. Hãy để tôi lặp lại điều đó. Đừng quên phá hủy cái bàn sau khi bạn hoàn thành nó

InnoDB và Berkeley DB
Công cụ cơ sở dữ liệu InnoDB và Berkley DB (BDB) là sản phẩm trực tiếp của công nghệ làm cho MySQL trở nên linh hoạt, API MySQL++. Hầu hết mọi thách thức mà bạn có thể gặp phải khi sử dụng MySQL đều bắt nguồn trực tiếp từ thực tế là các công cụ cơ sở dữ liệu ISAM và MyISAM không phải là giao dịch và thiếu hỗ trợ khóa ngoại. Mặc dù chậm hơn nhiều so với các công cụ ISAM và MyISAM, InnoDB và BDB bao gồm hỗ trợ giao dịch và khóa ngoại bị thiếu trong hai lựa chọn trước đây. Như vậy, nếu thiết kế của bạn yêu cầu một trong hai hoặc cả hai tính năng này, bạn thực sự buộc phải sử dụng một trong hai lựa chọn này

Nếu bạn cảm thấy mình có khả năng đặc biệt, bạn có thể tạo công cụ cơ sở dữ liệu của riêng mình bằng MySQL++. API cung cấp tất cả các chức năng bạn cần để làm việc với các trường, bản ghi, bảng, cơ sở dữ liệu, kết nối, tài khoản bảo mật và tất cả vô số chức năng khác tạo nên một DBMS chẳng hạn như MySQL. Đi quá sâu vào API nằm ngoài phạm vi của bài viết này, nhưng điều quan trọng cần biết là MySQL++ tồn tại và đó là công nghệ đằng sau các công cụ có thể tráo đổi của MySQL. Có lẽ, mô hình công cụ cơ sở dữ liệu trình cắm này thậm chí có thể được sử dụng để xây dựng nhà cung cấp XML gốc cho MySQL. (Bất kỳ nhà phát triển MySQL++ nào đọc phần này đều có thể coi đó là một yêu cầu. )

Lật công tắc
Công tắc làm cho tất cả tính linh hoạt này có thể là một tiện ích mở rộng mà MySQL cung cấp cho ANSI SQL, tham số TYPE. MySQL cho phép bạn chỉ định các công cụ cơ sở dữ liệu ở cấp độ bảng, vì vậy đôi khi chúng được gọi là định dạng bảng. Mã mẫu sau đây cho biết cách tạo các bảng sử dụng công cụ MyISAM, ISAM và HEAP tương ứng. Lưu ý rằng mã để tạo mỗi bảng là giống nhau, ngoại trừ tham số TYPE ở cuối, chỉ định công cụ cơ sở dữ liệu
 
TẠO BẢNG tbl MyISAM (
id INT NOT NULL AUTO_INCREMENT,
KHÓA CHÍNH (id),
value_a TINYINT
) LOẠI=MyISAM
TẠO BẢNG tblISAM (
id INT NOT NULL AUTO_INCREMENT,
KHÓA CHÍNH (id),
value_a TINYINT
) LOẠI=ISAM
TẠO BẢNG tblHeap (
id INT NOT NULL AUTO_INCREMENT,
KHÓA CHÍNH (id),
value_a TINYINT
) LOẠI=Đống

 

Bạn cũng có thể sử dụng lệnh ALTER TABLE để di chuyển một bảng hiện có từ công cụ này sang công cụ khác. Đoạn mã sau cho thấy việc sử dụng ALTER TABLE để di chuyển bảng MyISAM sang công cụ của InnoDB
 
ALTER TABLE tblMyISAM CHANGE TYPE=InnoDB
 

MySQL thực hiện điều này với ba bước. Đầu tiên, một bản sao chính xác của bảng được tạo. Tiếp theo, mọi thay đổi dữ liệu đến sẽ được xếp hàng đợi, trong khi bản sao được chuyển sang công cụ khác. Cuối cùng, mọi thay đổi dữ liệu trong hàng đợi được chuyển giao cho bảng mới và bảng ban đầu sẽ bị xóa


Phím tắt ALTER TABLE

Nếu bạn chỉ đơn giản là nâng cấp bảng của mình từ ISAM lên MyISAM, bạn có thể sử dụng lệnh mysql_convert_table_format thay vì viết câu lệnh ALTER TABLE


Bạn có thể sử dụng lệnh SHOW TABLE (là một phần mở rộng MySQL khác theo tiêu chuẩn ANSI) để xác định công cụ nào đang quản lý một bảng cụ thể. SHOW TABLE trả về một tập hợp kết quả có nhiều cột mà bạn có thể truy vấn để lấy tất cả các loại thông tin. Tên của công cụ cơ sở dữ liệu nằm trong trường Loại. Mã mẫu sau đây minh họa việc sử dụng SHOW TABLE
 
HIỂN THỊ TÌNH TRẠNG BẢNG TỪ tblInnoDB
 
MỘT SHOW TABLE thay thế

Bạn có thể sử dụng SHOW CREATE TABLE [TableName] để truy xuất cùng thông tin mà SHOW TABLE truy xuất


Cuối cùng, điều đáng chú ý là nếu bạn cố gắng sử dụng một công cụ không được biên dịch vào MySQL và được kích hoạt, thì MySQL sẽ không phàn nàn về điều đó. Thay vào đó, nó sẽ lặng lẽ cung cấp cho bạn một bảng ở định dạng mặc định (MyISAM). Có kế hoạch để MySQL đưa ra lỗi ngoài việc sử dụng định dạng bảng mặc định, nhưng hiện tại, bạn sẽ muốn kiểm tra định dạng bảng bằng SHOW TABLE nếu bạn không chắc chắn rằng có một công cụ cơ sở dữ liệu cụ thể nào không

Nhiều lựa chọn hơn có nghĩa là hiệu suất tốt hơn
Xem xét các phức tạp bổ sung của việc biên dịch lại và theo dõi công cụ nào được sử dụng cho các bảng cụ thể, tại sao bạn lại muốn sử dụng bất kỳ công cụ cơ sở dữ liệu không mặc định nào? . để điều chỉnh cơ sở dữ liệu để đáp ứng nhu cầu của bạn

Chắc chắn rồi, MyISAM rất nhanh, nhưng nếu thiết kế hợp lý của bạn yêu cầu giao dịch, thì bạn có thể thoải mái sử dụng một trong các công cụ hỗ trợ giao dịch. Hơn nữa, vì MySQL cho phép bạn áp dụng các công cụ cơ sở dữ liệu ở cấp độ bảng, nên bạn chỉ có thể lấy hiệu suất trên các bảng yêu cầu giao dịch và để các bảng không giao dịch được quản lý bởi công cụ MyISAM nhẹ hơn. Với MySQL, tính linh hoạt là chìa khóa

Các loại bảng trong MySQL là gì?

Lưu ý rằng MySQL hỗ trợ hai loại bảng khác nhau. bảng giao dịch an toàn (InnoDB và BDB) và bảng không an toàn giao dịch (HEAP, ISAM, MERGE và MyISAM) .

Công cụ lưu trữ bộ nhớ trong MySQL Bảng HEAP là gì?

Công cụ lưu trữ BỘ NHỚ tạo các bảng có nội dung được lưu trữ trong bộ nhớ . Trước MySQL 4. 1, Các bảng NHỚ được gọi là các bảng HEAP. Kể từ ngày 4. 1, HEAP là từ đồng nghĩa với BỘ NHỚ và BỘ NHỚ là thuật ngữ ưa thích. Mỗi bảng MEMORY được liên kết với một tệp đĩa.

MySQL có hỗ trợ nhiều công cụ lưu trữ cơ sở dữ liệu không?

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.

Sự khác biệt giữa các công cụ lưu trữ MyISAM và InnoDB trong MySQL là gì?

MyISAM chỉ có khóa cấp bảng đầy đủ. InnoDB có cái được gọi là tính toàn vẹn tham chiếu liên quan đến việc hỗ trợ các khóa ngoại (RDBMS) và các ràng buộc về mối quan hệ, MyISAM thì không (DMBS). InnoDB hỗ trợ các giao dịch, có nghĩa là bạn có thể cam kết và khôi phục. MyISAM không