2011-12-25 26 views
10

MySQL cho phép chúng tôi tạo các câu lệnh chọn với các tùy chọn SQL_CACHESQL_NO_CACHE. Các tùy chọn này ảnh hưởng đến bộ nhớ đệm của kết quả truy vấn trong bộ đệm truy vấn. Nhưng truy vấn nào tốt hơn để sử dụng tùy chọn SQL_CACHE và tùy chọn nào là SQL_NO_CACHE? Hoặc có lẽ nó là tốt hơn không sử dụng nó ở tất cả?Các phương pháp hay nhất của MySQL để sử dụng SQL_CACHE và SQL_NO_CACHE

Trả lời

12

Nói chung, bạn không cần phải sử dụng điều này chút nào. SQL_CACHE chỉ cần thiết nếu truy vấn không được lưu trong bộ nhớ cache theo mặc định, chúng được cấu hình mặc định. SQL_NO_CACHE rất hữu ích nếu bạn biết một truy vấn cụ thể sẽ không được sử dụng lại trong tương lai gần, đặc biệt nếu tập hợp kết quả lớn. Mục tiêu là tránh làm lộn xộn bộ nhớ cache với kết quả không cần thiết nữa.

+2

Cụ thể liên quan đến SQL_NO_CACHE - sử dụng tính năng này khi lưu vào bộ nhớ cache kết quả không tạo ra lợi ích để sử dụng lại sau này. Lý do bạn nên làm điều này là bởi vì nếu bạn có nhiều truy vấn mà bộ nhớ cache nhưng không bao giờ được sử dụng, bạn sẽ làm chậm mySQL xuống vì nó dành nhiều thời gian hơn và quản lý bộ nhớ cache không cần thiết. Điều này trở nên đặc biệt rõ ràng khi mọi người thiết lập kích thước query_cache thực sự lớn như thời gian để tuôn ra các mục cũ phát triển với kích thước. Đó là lý do tại sao có tùy chọn 0,1,2 để thay đổi hành vi của query_cache trong mySQL. – Ross

+0

@Michael, Trên thực tế, configuratino được đề xuất cho các máy chủ sản xuất là tắt ** tắt bộ nhớ truy vấn **. – Pacerier

+0

@Pacerier Điều này thực sự phụ thuộc vào khối lượng công việc của bạn. –

3

Tôi sử dụng SQL_NO_CACHE khi gỡ lỗi tốc độ truy vấn.

+0

Hãy xây dựng. – Pacerier

+0

Khi bạn đang thử nghiệm các truy vấn, thật hữu ích để đo thời gian thực hiện của chúng mà không cần chúng được lấy từ bộ nhớ cache. Tìm nạp từ bộ nhớ cache nhanh hơn nhiều so với tìm nạp từ cơ sở dữ liệu, do đó so sánh kết quả mà không biết liệu đó là từ DB hay bộ nhớ cache không có ý nghĩa. –

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