Mysql có thể ghi lại các truy vấn chậm, mất nhiều thời gian hơn để thực hiện. Trong một số trường hợp, điều này được mong đợi nhưng một số truy vấn mất nhiều thời gian hơn do lỗi mã hóa. slow-query-log chắc chắn có thể giúp bạn tìm thấy các truy vấn đó và giúp dễ dàng gỡ lỗi ứng dụng của bạn
Trong thế giới WordPress, nhiều plugin thường được mã hóa bởi những người nghiệp dư của tôi, những người không biết về quy mô hoạt động của các trang web lớn. Tốt hơn hết bạn nên sử dụng slow-query-log để tìm ra những plugin như vậy
Bật nhật ký truy vấn chậm
Bạn có thể bật ghi nhật ký chậm bằng cách bỏ nhận xét các dòng sau trong /etc/mysql/my.cnf
. Nếu bạn đang sử dụng EE4, vị trí của tệp cấu hình mysql được đề cập trong tài liệu của nó
slow-query-log = 1 slow-query-log-file = /var/log/mysql/mysql-slow.log long_query_time = 1 log-queries-not-using-indexes = 1
Dòng cuối cùng sẽ báo ghi nhật ký chậm để ghi các truy vấn không sử dụng chỉ mục. Bạn có thể giữ bình luận nếu bạn muốn bỏ qua các truy vấn không sử dụng chỉ mục
Nếu máy chủ của bạn có ít RAM hơn và bạn thấy nhiều truy vấn của mình trong nhật ký truy vấn chậm, thì bạn có thể tăng giá trị của long_query_time
Bạn nên kích hoạt nhật ký truy vấn chậm trong khi chỉ gỡ lỗi và tắt nó sau khi bạn hoàn thành việc này. Hãy chuyển sang phần phân tích
mysqldumpslow
Cái này đi kèm với máy chủ mysql
mysqldumpslow /var/log/mysql/mysql-slow.log
Sau đây sẽ hiển thị 5 truy vấn hàng đầu đã trả về tối đa hàng. Nó có thể tìm các truy vấn mà bạn đã bỏ lỡ mệnh đề LIMIT. Một kẻ giết người hiệu suất phổ biến
mysqldumpslow -a -s r -t 5 /var/log/mysql/mysql-slow.log
Sau đây sẽ sắp xếp đầu ra theo số lượng i. e. số lần truy vấn được tìm thấy trong nhật ký chậm. Hầu hết các truy vấn tần suất đôi khi hóa ra lại là các truy vấn không mong muốn
MySQL cung cấp một số tệp nhật ký khác nhau có thể giúp bạn tìm hiểu điều gì đang diễn ra bên trong phiên bản máy chủ MySQL của bạn. Bao gồm các
- nhật ký lỗi
- nhật ký isam
- nhật ký truy vấn chung
- nhật ký nhị phân
- nhật ký chậm
Trong số này, nhật ký truy vấn chậm đặc biệt hữu ích để tìm các truy vấn không hiệu quả hoặc tốn thời gian, điều này có thể ảnh hưởng xấu đến cơ sở dữ liệu và hiệu suất tổng thể của máy chủ. Blog này sẽ mô tả cách đọc và diễn giải đầu ra nhật ký truy vấn chậm để có hiệu suất truy vấn gỡ lỗi tốt hơn
Nhật ký truy vấn chậm bao gồm các câu lệnh SQL mất hơn long_query_time giây để thực thi và yêu cầu kiểm tra ít nhất các hàng min_examined_row_limit. Do đó, các truy vấn xuất hiện trong nhật ký truy vấn chậm là những truy vấn mất nhiều thời gian để thực hiện và do đó là các ứng cử viên để tối ưu hóa
Nhật ký truy vấn chậm bị tắt theo mặc định để tiết kiệm dung lượng ổ đĩa. Bạn có thể bật tính năng này bằng cách đặt biến --slow_query_log thành 1 [BẬT trong Navicat]. Tương tự như vậy, không cung cấp đối số cũng bật nhật ký truy vấn chậm. Tương tự như vậy, một đối số là 0 [TẮT trong Navicat] sẽ vô hiệu hóa nhật ký
Trong Navicat, bạn có thể truy cập các biến hệ thống bằng công cụ Server Monitor. Nó có thể truy cập thông qua lệnh menu chính Công cụ. Trong Màn hình máy chủ, nhấp vào tab Biến ở giữa và cuộn xuống để xem các biến máy chủ slow_query_log và slow_query_log_file trong danh sách
Kiểm tra nhật ký truy vấn dài và chậm có thể là một công việc tốn thời gian do lượng nội dung khổng lồ cần sàng lọc. Đây là một mục điển hình trong tệp nhật ký chậm có thể trông như thế nào
# Time: 140905 6:33:11 # User@Host: dbuser[dbname] @ hostname [1.2.3.4] # Query_time: 0.116250 Lock_time: 0.000035 Rows_sent: 0 Rows_examined: 20878 use dbname; SET timestamp=1409898791; ...SLOW QUERY HERE...
Để đọc nội dung nhật ký dễ dàng hơn, bạn có thể sử dụng tiện ích dòng lệnh mysqldumpslow để xử lý tệp nhật ký truy vấn chậm và tóm tắt nội dung của nó
~ $ mysqldumpslow -a /var/lib/mysql/slowquery.log Reading mysql slow query log from /var/lib/mysql/slowquery.log Count: 2 Time=316.67s [633s] Lock=0.00s [0s] Rows_sent=0.5 [1], Rows_examined=0.0 [0], Rows_affected=0.0 [0], root[root]@localhost ...SLOW QUERY HERE...
Trình phân tích truy vấn Navicat
Công cụ Trình phân tích truy vấn của cung cấp biểu diễn đồ họa của nhật ký truy vấn giúp diễn giải nội dung của chúng dễ dàng hơn nhiều. Ngoài ra, công cụ Trình phân tích truy vấn cho phép bạn theo dõi và tối ưu hóa hiệu suất truy vấn, trực quan hóa thống kê hoạt động truy vấn, phân tích các câu lệnh SQL, cũng như nhanh chóng xác định và giải quyết các truy vấn chạy dài
Ngoài Nhật ký truy vấn chậm, Trình phân tích truy vấn thu thập thông tin về các câu lệnh truy vấn bằng một trong các phương pháp sau
- Truy xuất Nhật ký truy vấn chung từ máy chủ và phân tích thông tin của nó
- Truy vấn cơ sở dữ liệu performance_schema và phân tích nó để biết thông tin hiệu suất cụ thể
Bạn sẽ tìm thấy phần Trình phân tích truy vấn bên dưới phần Danh sách quy trình và truy vấn bế tắc mới nhất
Blog này đã trình bày một số cách đọc đầu ra nhật ký truy vấn chậm để gỡ lỗi hiệu suất truy vấn của bạn tốt hơn
Nhấp để biết thêm chi tiết về tất cả các tính năng của Navicat Monitor hoặc bản dùng thử miễn phí đầy đủ chức năng trong 14 ngày