Vui lòng tham khảo các bài viết sau:
Gợi ý để làm cho dữ liệu của bạn nhỏ nhất có thể:
Thiết kế các bảng của bạn để giảm thiểu không gian của chúng trên đĩa. Điều này có thể dẫn đến những cải tiến lớn bằng cách giảm lượng dữ liệu được ghi và đọc từ đĩa. Các bảng nhỏ hơn thường yêu cầu ít bộ nhớ chính hơn trong khi nội dung của chúng đang được xử lý tích cực trong quá trình thực hiện truy vấn. Bất kỳ việc giảm dung lượng nào cho dữ liệu bảng cũng dẫn đến các chỉ mục nhỏ hơn có thể được xử lý nhanh hơn.
MySQL hỗ trợ nhiều công cụ lưu trữ khác nhau (loại bảng) và định dạng hàng. Đối với mỗi bảng, bạn có thể quyết định sử dụng phương pháp lưu trữ và lập chỉ mục nào. Chọn định dạng bảng thích hợp cho ứng dụng của bạn có thể mang lại cho bạn hiệu suất lớn.
Bạn có thể có hiệu suất tốt hơn cho một bảng và giảm thiểu không gian lưu trữ bằng cách sử dụng các kỹ thuật được liệt kê ở đây: - Sử dụng các loại dữ liệu hiệu quả nhất (nhỏ nhất) có thể. MySQL có nhiều loại chuyên dụng tiết kiệm không gian đĩa và bộ nhớ. Ví dụ: sử dụng các loại số nguyên nhỏ hơn nếu có thể để có được các bảng nhỏ hơn. MEDIUMINT thường là lựa chọn tốt hơn INT vì cột MEDIUMINT sử dụng ít không gian hơn 25%.
Khai báo các cột là KHÔNG NULL nếu có thể. Nó làm cho mọi thứ nhanh hơn và bạn tiết kiệm một bit trên mỗi cột. Nếu bạn thực sự cần NULL trong ứng dụng của mình, bạn chắc chắn nên sử dụng nó. Chỉ cần tránh có nó trên tất cả các cột theo mặc định.
Đối với các bảng MyISAM, nếu bạn không có bất kỳ cột có độ dài thay đổi nào (cột VARCHAR, TEXT hoặc BLOB), định dạng hàng có kích thước cố định sẽ được sử dụng.
Các bảng InnoDB sử dụng định dạng lưu trữ nhỏ gọn. Trong các phiên bản của MySQL sớm hơn 5.0.3, các hàng InnoDB chứa một số thông tin dư thừa, chẳng hạn như số lượng cột và độ dài của mỗi cột, ngay cả đối với các cột có kích thước cố định. Theo mặc định, các bảng được tạo ở định dạng nhỏ gọn (ROW_FORMAT = COMPACT). Sự hiện diện của định dạng hàng nhỏ gọn làm giảm không gian lưu trữ hàng khoảng 20% với chi phí tăng sử dụng CPU cho một số hoạt động. Nếu khối lượng công việc của bạn là một công việc điển hình bị giới hạn bởi tốc độ nhấn bộ đệm và tốc độ ổ đĩa thì có khả năng sẽ nhanh hơn. Nếu đó là một trường hợp hiếm hoi bị giới hạn bởi tốc độ CPU, nó có thể chậm hơn.
Định dạng InnoDB nhỏ gọn cũng thay đổi cách các cột CHAR chứa dữ liệu UTF-8 được lưu trữ. Với ROW_FORMAT = REDUNDANT, UTF-8 CHAR (N) chiếm 3 × N byte, với điều kiện độ dài tối đa của ký tự được mã hóa UTF-8 là ba byte. Nhiều ngôn ngữ có thể được viết chủ yếu bằng các ký tự UTF-8 byte đơn, do đó, chiều dài lưu trữ cố định thường lãng phí không gian. Với định dạng ROW_FORMAT = COMPACT, InnoDB phân bổ một lượng lưu trữ thay đổi trong phạm vi từ N đến 3 × N byte cho các cột này bằng cách tước các khoảng trắng theo sau nếu cần. Độ dài lưu trữ tối thiểu được giữ dưới dạng N byte để tạo điều kiện cập nhật tại chỗ trong các trường hợp điển hình.
Chỉ số chính của một bảng nên càng ngắn càng tốt. Điều này giúp nhận dạng từng hàng dễ dàng và hiệu quả
Chỉ tạo các chỉ mục mà bạn thực sự cần. Các chỉ mục là tốt để truy xuất nhưng xấu khi bạn cần lưu trữ dữ liệu nhanh chóng. Nếu bạn truy cập một bảng chủ yếu bằng cách tìm kiếm trên một tổ hợp các cột, hãy tạo một chỉ mục trên chúng. Phần đầu tiên của chỉ mục nên là cột được sử dụng nhiều nhất. Nếu bạn luôn sử dụng nhiều cột khi chọn từ bảng, thì cột đầu tiên trong chỉ mục sẽ là cột có nhiều bản sao nhất để có được chỉ số nén tốt hơn.
Trong một số trường hợp, có thể có ích khi chia thành hai bảng được quét rất thường xuyên. Điều này đặc biệt đúng nếu đó là bảng định dạng động và có thể sử dụng bảng định dạng tĩnh nhỏ hơn có thể được sử dụng để tìm các hàng có liên quan khi quét bảng.