Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Khi nào sử dụng SQL_NO_CACHE

SQL_NO_CACHE

Chỉ cần thêm SQL_NO_CACHE sau phần SELECT của câu lệnh SELECT và trước danh sách trường. Truy vấn đầu tiên bên dưới sẽ sử dụng bộ đệm truy vấn nếu nó được bật và truy vấn được lưu vào bộ đệm:

SELECT * FROM table WHERE search= 'keyword'; //lets take 1ms

Truy vấn thứ hai bên dưới sẽ không sử dụng bộ đệm truy vấn:

SELECT SQL_NO_CACHE * FROM table WHERE search= 'keyword'; //lets take ~0.2ms at 2nd time

Điều này đặc biệt hữu ích khi đánh điểm chuẩn cho một truy vấn; nếu bộ đệm truy vấn được bật mặc dù truy vấn đầu tiên có thể mất một chút thời gian, truy vấn thứ hai và các truy vấn tiếp theo gần như ngay lập tức. Với việc sử dụng SQL_NO_CACHE, bạn có thể yên tâm rằng bộ đệm truy vấn không được sử dụng và có thể so sánh thời gian kết quả một cách an toàn. Bạn có thể giúp MySQL làm cho bộ đệm truy vấn hoạt động hiệu quả hơn bằng cách sử dụng gợi ý này cho các truy vấn có tính năng động cao (chẳng hạn như tìm kiếm từ khóa hoặc báo cáo chỉ chạy hàng đêm). lệnh.

SQL_CACHE và SQL_NO_CACHE là gì?

Các tùy chọn SQL_CACHE và SQL_NO_CACHE ảnh hưởng đến bộ nhớ đệm của các kết quả truy vấn trong bộ đệm truy vấn. SQL_CACHE yêu cầu MySQL lưu trữ kết quả trong bộ đệm truy vấn nếu nó có thể lưu vào bộ đệm ẩn và giá trị của biến hệ thống query_cache_type là 2 hoặc DEMAND. Với SQL_NO_CACHE, máy chủ không sử dụng bộ đệm truy vấn. Nó không kiểm tra bộ đệm truy vấn để xem liệu kết quả đã được lưu vào bộ đệm hay chưa, cũng không kiểm tra bộ đệm kết quả truy vấn. (Do giới hạn trong trình phân tích cú pháp, ký tự khoảng trắng phải đứng trước và theo sau từ khóa SQL_NO_CACHE; khoảng trắng chẳng hạn như dòng mới khiến máy chủ kiểm tra bộ đệm truy vấn để xem liệu kết quả đã được lưu vào bộ đệm chưa.)

NO_CACHE theo ý kiến ​​của tôi có thể được sử dụng nếu 'CACHE' được bật và dữ liệu trong db được cập nhật động, tức là không thể dựa vào bộ đệm dữ liệu db, ví dụ:lưu trữ băm mật khẩu người dùng, chúng tôi không thể dựa vào CACHE vì thường xuyên khả năng thay đổi dữ liệu

Cập nhật các tình huống hữu ích

1) buộc không sử dụng bộ đệm để kiểm tra tốc độ truy vấn



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. chia nhỏ từ khóa cho bài php mysql

  2. CHỌN VÀO OUTFILE không thể ghi vào tệp

  3. SQLAlchemy và tham gia, chúng tôi không có khóa ngoại

  4. Cách giới hạn hàng trong tập kết quả MySQL

  5. Tìm kiếm MySQL trong danh sách dấu phẩy