Đôi khi, một truy vấn SQL duy nhất có thể là nguyên nhân gây ra tất cả các sự cố của máy chủ. MySQL có chức năng tích hợp để ghi lại nhật ký truy vấn chậm hoặc xác định các truy vấn không tối ưu và mất nhiều thời gian để hoàn thành, cho phép bạn ghi lại tất cả các truy vấn chạy chậm đã chiếm hơn số giây xác định để thực thi bởi công cụ cơ sở dữ liệu MySQL thành một tập tin. Nhật ký truy vấn chậm không được kích hoạt hoặc được bật theo cài đặt MySQL mặc định, do đó nó là một trong những nhật ký ít được sử dụng hơn.
Để bật nhật ký truy vấn chậm, chỉ cần thêm dòng sau vào tệp cấu hình MySQL (my.cnf hoặc my.ini), sau đó khởi động lại máy chủ MySQL:
log-slow-queries
Hoặc,
log-slow-queries = [path to the log file]
Thay thế [đường dẫn đến tệp nhật ký] với đường dẫn thực tế đến tệp nhật ký truy vấn chậm mà bạn muốn MySQL ghi nhật ký vào, đây là giá trị tùy chọn.
Hoặc bạn có thể bắt đầu mysqld bằng –log-slow-queries [=file_name] tùy chọn để bật nhật ký truy vấn chậm. Trong cả hai cú pháp, nếu không có tên tệp nhật ký nào được chỉ định, tên mặc định là host_name -slow.log, được lưu trữ trong thư mục tệp dữ liệu MySQL. Nếu tên tệp được cung cấp, nhưng không phải là tên đường dẫn tuyệt đối, máy chủ cũng ghi tệp vào thư mục dữ liệu.
Sau khi bật nhật ký truy vấn chậm, MySQL sẽ tạo, chụp và ghi vào tệp nhật ký với tất cả các câu lệnh SQL mất hơn long_query_time giây để thực thi, theo mặc định được đặt thành 10 giây . Thời gian để có được các khóa bảng ban đầu không được tính là thời gian thực hiện. mysqld ghi một câu lệnh vào nhật ký truy vấn chậm sau khi nó được thực thi và sau khi tất cả các khóa đã được giải phóng, vì vậy thứ tự nhật ký có thể khác với thứ tự thực thi.
Sau đó, bạn có thể kiểm tra tất cả các truy vấn SQL chậm trong tệp nhật ký và sau đó thực hiện các bước cần thiết để tối ưu hóa các câu lệnh SQL. Nhật ký truy vấn chậm sẽ cho bạn biết thời gian hoàn thành truy vấn, thời gian chạy truy vấn, mất bao lâu để bảo mật các khóa của nó, kết quả là bao nhiêu hàng được gửi lại, bao nhiêu hàng đã được kiểm tra để xác định kết quả, cơ sở dữ liệu nào đã được sử dụng và chính truy vấn thực tế. Nhưng hãy nhớ rằng truy vấn SQL có trong nhật ký có thể đã tối ưu, nhưng được thực thi chậm do tài nguyên hệ thống đã được sử dụng hết bởi câu lệnh chậm thực tế cần được tinh chỉnh.