Phân tích những query chạy chậm trên MySQL bằng mysqldumpslow và pt-query-digest

*** Lưu ý: bài viết này dành cho MySQL version 5.5 trở lên. Đối với những version cũ hơn có thể những cú pháp, câu lệnh trong bài viết này sẽ không chính xác.

MySQL có thể lưu log những câu lệnh query chạy chậm và tốn nhiều thời gian để thực thi. Việc lưu log như vậy có thể giúp chúng ta debug được dễ dàng cũng như dễ dàng fix những lỗi trong code dẫn đến việc xảy ra những câu query của MySQL chạy chậm.

Bật tính năng slow-query-log

Mở file cấu hình của MySQL /etc/mysql/my.cnf và chỉnh với những thông số như bên dưới

Dòng cuối cùng sẽ khai báo với slow-query-log rằng chúng ta sẽ lưu log những câu query không sử dụng index

Sử dụng mysqldumpslow

Câu lệnh dưới đây sẽ hiển thị top 5 câu query trả về nhiều rows nhất, bạn có thể kiểm tra nếu quá nhiều rows trả về trong câu query, có thể bạn quên không sử dụng LIMIT của MySQL

Còn dưới đây là câu lệnh trả về top 5 câu query được chạy nhiều nhất trong slow logs. Bạn có thể kiểm tra và tối ưu chúng.

Sử dụng pt-query-digest

Công cụ này là 1 phần trong gói Percona toolkit

Chạy dòng lệnh dưới đây để phân tích slow queries

Nếu bạn đang có nhiều database, thì bạn có thể lọc theo database name bằng cách sau (db_wordpress là tên của database, bạn có thể thay tương ứng bằng tên database của bạn)

Sử dụng mysqlsla

Đây là 1 ứng dụng của bên thứ 3, bạn có thể tham khảo trên Github tại link này => https://github.com/daniel-nichter/hackmysql.com

Chạy dòng lệnh dưới đây để phân tích slow queries

Lọc theo database như sau