Các trang của tệp dữ liệu innodb được lưu vào bộ nhớ đệm trong vùng đệm innodb. Đây là những gì bạn mong đợi. Đọc tệp chậm, ngay cả trên ổ cứng tốt, đặc biệt là đọc ngẫu nhiên, phần lớn là những gì cơ sở dữ liệu nhìn thấy.
Có thể là truy vấn đầu tiên của bạn đang thực hiện một kiểu quét bảng nào đó kéo rất nhiều trang vào vùng đệm, sau đó truy cập chúng rất nhanh. Hoặc một cái gì đó tương tự.
Đây là những gì tôi mong đợi.
Tốt nhất, hãy sử dụng cùng một công cụ cho tất cả các bảng (ngoại lệ:bảng hệ thống, bảng tạm thời (có thể) và bảng rất nhỏ hoặc những bảng tồn tại trong thời gian ngắn). Nếu bạn không làm điều này thì họ phải tranh giành ram.
Giả sử tất cả các bảng của bạn đều là innodb, hãy làm cho vùng đệm sử dụng tối đa 75% ram vật lý của máy chủ (giả sử bạn không chạy quá nhiều tác vụ khác trên máy).
Sau đó, bạn sẽ có thể lắp khoảng 12G cơ sở dữ liệu của mình vào ram, vì vậy một khi nó được "làm ấm", 12G "được sử dụng nhiều nhất" của cơ sở dữ liệu của bạn sẽ ở trong ram, nơi việc truy cập nó rất tốt và nhanh chóng.
Một số người dùng mysql có xu hướng "hâm nóng" máy chủ sản xuất sau khi khởi động lại bằng cách gửi cho họ các truy vấn được sao chép từ máy khác trong một thời gian (những truy vấn này sẽ là nô lệ sao chép) cho đến khi họ thêm chúng vào nhóm sản xuất của mình. Điều này giúp tránh tình trạng quá chậm khi bộ nhớ cache nguội. Ví dụ:Youtube làm điều này (hoặc ít nhất là trước đây; Google đã mua chúng và bây giờ họ có thể sử dụng Google-fu)