Tôi đang kết nối cơ sở dữ liệu MySQL với các đối tượng dữ liệu PHP (PDO) và thực hiện một truy vấn SQL mở rộng. Thông thường, mất khoảng 1500 ms; Tôi vẫn cần tối ưu hóa nó. Khi tôi chạy tập lệnh PHP hai lần với một khoảng thời gian ngắn ở giữa, truy vấn chỉ mất khoảng 90 ms. Các truy vấn là trong cả hai trường hợp như nhau. Khi tôi chạy tập lệnh, với cùng một truy vấn, sau một thời gian nữa, phải mất 1500 ms một lần nữa.
Tại sao vậy? Liệu bộ đệm cơ sở dữ liệu tự động? Có đôi khi cơ sở dữ liệu lưu bộ đệm và sau đó tự động xóa nó?
Tôi giả sử các kết quả không thể được lưu trữ bởi PHP, bởi vì điều này xảy ra trong hai luồng khác nhau. Tôi không nghĩ PHP sẽ lưu trữ các kết quả, bởi vì nó không thể biết liệu cơ sở dữ liệu đã thay đổi hay chưa.
Tôi có một kịch bản chạy mỗi phút để chèn các hàng mới vào cơ sở dữ liệu. Đây cũng có thể là lý do mà phải mất 1500 ms một lần nữa sau một thời gian; bộ đệm sẽ bị xóa vì các bảng có liên quan không còn giống nhau nữa.