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

Bật ghi nhật ký truy vấn chậm (Nhật ký truy vấn chậm) trong Cơ sở dữ liệu MySQL

Một trong những yêu cầu chính đối với một máy chủ web nhanh là có các câu lệnh hoặc truy vấn SQL hiệu quả và hiệu quả được tối ưu hóa. Bất kỳ lệnh hoặc câu lệnh SQL (Ngôn ngữ truy vấn có cấu trúc) nào không tối ưu mà mất quá nhiều thời gian để thực thi sẽ sử dụng nhiều tài nguyên hệ thống, khiến cơ sở dữ liệu MySQL chạy chậm hơn và ngày càng nhiều truy vấn tồn đọng hàng đợi và khi đạt đến giới hạn kết nối, khách truy cập bị từ chối hoặc bị từ chối kết nối. Trong trường hợp xấu nhất, máy chủ web của bạn cũng sẽ gặp sự cố hoặc liên tục hoạt động kém. Trường hợp này đặc biệt đúng khi bạn đang sử dụng loại bảng MyISAM sử dụng khóa cấp bảng thay vì khóa cấp hàng trong một trang web có lưu lượng truy cập cao.

Đô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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MyISAM so với InnoDB

  2. Hàm MySQL SIGN () - Tìm hiểu xem một số là dương hay âm trong MySQL

  3. Hibernate:Tạo bảng Mysql InnoDB thay vì MyISAM

  4. CHỌN / NHÓM THEO - phân đoạn thời gian (10 giây, 30 giây, v.v.)

  5. Cách đọc tệp nhật ký nhị phân MySQL (BinLog) với mysqlbinlog