Các "thực hành tốt nhất" là:
- Đo lường hiệu suất, cô lập các hệ thống phụ liên quan cũng như bạn có thể.
- Xác định nguyên nhân gốc rễ của nút cổ chai. Bạn I/O bị ràng buộc? CPU bị ràng buộc? Bộ nhớ bị ràng buộc? Đang đợi khóa?
- Thực hiện các thay đổi để giảm bớt nguyên nhân gốc rễ mà bạn đã khám phá.
- Đo lại, để chứng minh rằng bạn đã sửa nút cổ chai và theo số lượng.
- Chuyển đến bước 2 và lặp lại khi cần thiết cho đến khi hệ thống hoạt động đủ nhanh.
Đăng ký nguồn cấp dữ liệu RSS tại http://www.mysqlperformanceblog.com và đọc các bài viết lịch sử của nó. Đó là một nguồn tài nguyên cực kỳ hữu ích cho trí tuệ liên quan đến hiệu suất. Ví dụ, bạn hỏi về InnoDB so với MyISAM. Kết luận của họ: InnoDB có hiệu suất cao hơn ~ 30% so với MyISAM. Mặc dù cũng có một vài tình huống sử dụng mà MyISAM không thể thực hiện InnoDB.
Các tác giả của blog mà cũng là đồng tác giả của "High Performance MySQL," cuốn sách được đề cập bởi @ Andrew Barnett.
Re comment from @ ʞɔıu: Làm thế nào để biết bạn đang I/O bị ràng buộc so với CPU bị ràng buộc với bộ nhớ ràng buộc là nền tảng phụ thuộc. Hệ điều hành có thể cung cấp các công cụ như ps, iostat, vmstat hoặc top. Hoặc bạn có thể phải có công cụ của bên thứ ba nếu hệ điều hành của bạn không cung cấp.
Về cơ bản, bất kỳ tài nguyên nào được chốt ở mức sử dụng 100%/độ bão hòa có thể là nút cổ chai của bạn. Nếu tải CPU của bạn thấp nhưng tải I/O của bạn ở mức tối đa cho phần cứng của bạn, thì bạn là I/O bị ràng buộc.
Tuy nhiên, đó chỉ là một điểm dữ liệu. Biện pháp khắc phục cũng có thể phụ thuộc vào các yếu tố khác. Ví dụ, một truy vấn SQL phức tạp có thể đang làm một filesort, và điều này giữ cho I/O bận. Bạn có nên ném phần cứng nhanh hơn/nhanh hơn vào nó hay bạn nên thiết kế lại truy vấn để tránh filesort?
Có quá nhiều yếu tố để tóm tắt trong bài đăng StackOverflow và thực tế là nhiều sách tồn tại trên chủ đề hỗ trợ điều này.Giữ cho cơ sở dữ liệu hoạt động hiệu quả và tận dụng tối đa các nguồn lực là công việc toàn thời gian đòi hỏi các kỹ năng chuyên môn và nghiên cứu liên tục.
Jeff Atwood chỉ viết một bài viết trên blog tốt đẹp về việc tìm kiếm tắc nghẽn trong hệ thống:
Nguồn
2009-02-23 22:09:45
một lý do rất lớn để đi với động cơ INNODB - là hỗ trợ giao dịch. MyIsam không ủng hộ điều đó. Nếu bạn quan tâm về tính toàn vẹn dữ liệu của bạn (như bạn nên :)) - chỉ đơn giản là không có cách nào khác.không có cách nào để khôi phục lại chuỗi sql đáng tin cậy nếu bạn không sử dụng các giao dịch và một cái gì đó xấu đã xảy ra như cúp điện. – Stann