[英]Wordpress is executing this SQL query all the time?
我的Wordpress網站沒有很多流量,但我通過“SHOW PROCESS”繼續看到這個SQL查詢 在MySQL中:
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID
FROM wp_posts
WHERE 1=1 AND wp_posts.post_type = 'post' AND (wp_posts.post_status = 'publish')
ORDER BY wp_posts.post_date DESC LIMIT 0, 10
我已關閉所有插件並更新到最新的Wordpress版本(4.1)。 我還使用WordPress(2014)內置的默認主題。
每當我運行“SHOW PROCESS;”時,我都可以看到至少有3-8個查詢正在運行,有時甚至更多,比如此查詢的10+,而流量非常輕(甚至空閑)。
我問,因為MySQL正在使用大量的CPU資源,我想知道為什么這個查詢每秒都會多次顯示我運行“SHOW PROCESS”。
你所看到的是正常的和預期的,你無能為力。 在頁面加載上最多有30個SQL查詢是正常的。 應該檢查更多。
在每個頁面加載時,即使在404頁面上,或者當一堆垃圾進入URL字段/地址欄時,也會執行主查詢。 URL在查詢參數中被解析和轉換, WP_Query
使用它根據來自URL的參數從db中檢索帖子。 WP_Query
將所有參數和請求轉換為單個SQL查詢,它用於與數據庫通信以檢索對其的詢問。 這是一個db命中,你無法做任何事情,大多數可能這是你的問題中的SQL查詢。
任何自定義查詢( new WP_Query
, get_posts
和get_pages
)都將轉換為SQL查詢,以便從數據庫中查詢和檢索帖子
導航菜單使用轉換為SQL查詢的函數來構造主導航菜單
用於顯示附加到帖子的標簽,術語和類別的函數使用SQL查詢從DB檢索標簽/術語/類別
大多數默認widgtes使用自定義查詢和/或使用SQL查詢從db獲取信息的函數
某些條件標記使用SQL查詢來檢查數據庫中條目的條件
在頁面上,主查詢進行額外的SQL查詢以檢索用於特定頁面的頁面模板
Wordpress運行一些在后台使用SQL查詢的進程
相關或熱門的帖子部分還使用自定義查詢,這些查詢在SQL查詢中進行轉換以檢索相關帖子
這些只是在每個頁面加載時自動命中數據庫的一些內容,有些可以控制,有些則無法控制,但在一天結束時,如果沒有這些查詢,您將無法在頁面中獲得視覺體驗或功能
我建議您在測試安裝中下載並安裝Query Monitor 。 不要在生產站點上運行此工具,因為信息會直接打印到屏幕上。 此工具打印出每個頁面加載的所有查詢/ db命中以及執行這些查詢所需的時間。 有了這個,你就可以很好地了解發生了什么以及哪些功能擊中了數據庫。
正如我已經說過的,在單個頁面加載上最多有30個SQL查詢(db命中)是正常的。 更多應該檢查這一點,這通常可以通過優化您的代碼來糾正
要記住和考慮的最重要因素是查詢量與執行它們所花費的實際時間 。 這應該是決定走哪條路線的最重要因素。 我過去曾多次表明,四個構造良好的查詢有時比一次查詢所需要的一個查詢快10倍。
此外,在無法簡化的大型操作上正確使用緩存和瞬態。 在某些階段,無論您嘗試什么,您都會遇到70分貝命中的查詢。
編輯
只是要添加,流量不會增加或減少默認情況下在給定頁面上運行的SQL查詢量。 SQL查詢的數量完全取決於為完全加載頁面而運行的進程
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.