Làm cách nào để tìm nguồn truy vấn chậm trong Wordpress?


7

Tôi có một trang web WordPress với hơn 8000 bài đăng và mỗi khi tôi thêm một trang mới, trang web sẽ không phản hồi. Tôi đã kiểm tra nhật ký truy vấn chậm của MySQL và phát hiện ra rằng nó đang thực hiện một lựa chọn trả về hầu hết các hàng trong bảng bài viết và mất rất nhiều thời gian để thực hiện.

Đây là một ví dụ:

Query_time: 149.702704  
Lock_time: 0.000078  
Rows_sent: 4699  
Rows_examined: 9398  
Rows_affected: 0  
Rows_read: 4699
use 488726_wp;

SELECT `ID`, `post_author`, `post_date`, `post_date_gmt`, `post_status`, `post_name`, `post_modified`, `post_modified_gmt`, `post_parent`, `post_type`
    FROM `wp_posts` 
        WHERE ( (post_status = 'publish' AND (post_type = 'post' OR post_type = ''))  
            OR  (post_status = 'publish' AND post_type = 'page') )  
        AND post_password='' 
        ORDER BY post_modified DESC;

Làm thế nào tôi có thể tìm thấy nguồn của các truy vấn này?

Câu trả lời:


4

Hãy thử sử dụng plugin này http://wordpress.org/extend/plugins/debug-queries/ để kiểm tra hiệu suất của các truy vấn cơ sở dữ liệu của bạn. Nó cho thấy rất nhiều điều thú vị về mỗi và mọi truy vấn được thực hiện và thời gian truy vấn cần hoàn thành và thời gian cần thiết để tạo toàn bộ trang.


plugin cũng hiển thị Call From có thể khiến bạn hiểu từ đó truy vấn được thực hiện.
Sisir

2

Những gì bạn có thể muốn làm là thực hiện GIẢI THÍCH cho truy vấn như thế này:

EXPLAIN SELECT ID, post_author, post_date,
post_date_gmt, post_status, post_name,
post_modified, post_modified_gmt, post_parent,
post_type FROM wp_posts
WHERE ( (post_status = 'publish' AND (post_type = 'post' OR post_type = ''))
OR (post_status = 'publish' AND post_type = 'page') )
AND post_password='' ORDER BY post_modified DESC;

Điều này sẽ tiết lộ mẫu truy cập được thực hiện bởi MySQL đang thu thập dữ liệu bạn cần.

Tuy nhiên, chỉ cần nhìn chằm chằm vào các mệnh đề WHERE và ORDER BY, tôi muốn đưa ra gợi ý sau: tạo một chỉ mục có thể giúp truy vấn tăng tốc. Vì post_status và post_type có các giá trị tĩnh trong truy vấn và post_modified trình bày thứ tự sắp xếp cho hai cột đó, vui lòng thử chỉ mục này:

ALTER TABLE wp_posts ADD INDEX (post_status,post_type,post_modified);

Hãy thử một lần !!!



0

Hãy thử plugin sau, Giao diện truy vấn , sẽ cho phép bạn hiển thị các truy vấn cũng như cung cấp cho bạn một giao diện nơi bạn cũng có thể kiểm tra xem những gì truy vấn đang thực hiện bằng cách kiểm tra các chỉ mục hoặc giải thích của nó.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.