2009-05-27 41 views
3

我最近已經開始推出並慢慢推出自制的CMS。該網站允許進行大量定製,將國際化和定製化轉變爲不需要源代碼的級別。這是一個個人項目,整個目的是要看看我能夠推動自己的編程極限(關於處理博客,webcomic和一個小論壇的CMS的解散問題不是我願意的考慮一下,直到我清理乾淨並且再加工 - 還有,鑑於這是一個業餘項目,我認爲它與其他更精煉的項目相比有任何引力......但這些並不是涉及。在手的話題)網站策略:關於有多少SQL查詢是足夠的問題

我已經制定了一系列的代碼,讓我看到每一頁是如何快速生成多少查詢是跑;平均而言,我看到9-13,每頁執行12個MySQL查詢。生成頁面的平均時間在10-20毫秒之間。現在,沒有任何專業設計經驗,我應該爭取什麼樣的最佳選擇?

什麼是減少生成時間的方法(或者平均15毫秒/頁,這甚至不是問題),或者減少大多數內容被加載的頁面上的查詢數量的策略來自MySQL數據庫,包括菜單項等。

請注意,這是一個非常寬泛的問題;這並不是我的意圖,而是要求提出一般問題或激勵對話,而是找出減少服務器上的負載(如果有的話)的方法,這樣的系統可以創建。

+1

另請參見類似問題http://stackoverflow.com/questions/807095/what-is-the-optimal-mysql-query-number-in-php-sript http://stackoverflow.com/questions/830489/如何計算mysql-queries-per-page-total-number-of-mysql-queries-used-per-page http://stackoverflow.com/questions/342504/is-20-sql-queries-per-page-load -really-considered-a-lot/342544 http://stackoverflow.com/questions/371126/in-php-how-many-db-calls-per-page-is-okay – thomasrutter 2009-05-27 06:33:24

+1

和http://stackoverflow.com/questions/561900/how-many-mysql-queries-should-i-limit-myself-to-on-a-page-php-mysql/562106 – thomasrutter 2009-05-27 06:33:53

回答

0

如果你主要是開發這些網站的小公司或其他原因,你不能預測或想象一個高流量(即沒有像Digg/Facebook的/等),然後爲15ms的平均應該罰款。

請問12條查詢的用途是什麼?我想他們是爲了獲取菜單項目,獲取頁面內容等。有多種組合/優化查詢的方法,所以如果您可能發佈一些我(和其他堆棧器)可能會幫助您優化查詢。

+0

由於時間較晚,我在不到八小時的時間裏開會,首先會有睡眠。但我一定會盡快將這些信息發佈在查詢的詳細信息上。 – 2009-05-27 06:16:15

0

這取決於...因爲它總是與性能問題呢,如果系統目前滿足您的性能要求則不用太擔心。

通常,如果您的網頁生成時間爲15毫秒,則它只會是用戶體驗的總點擊時間的一小部分,請參閱yahoo exception performance pages爲了儘可能快地獲得最大頁面負載時間。

在服務器上,有機會,該數據庫將被緩存的結果,幾乎所有的如果不是所有正在運行的查詢,因而速度非常快頁時機。如果您尚未測試應用程序,則可能需要加載更大的數據集,您可能會發現隨着數據集的大小,性能會下降。

2
  • 使用PHP opcode cache將大幅削減跳過解析和編譯成字節碼開編譯PHP腳本,所花費的時間。

  • 打開MySQL query cache通常(雖然不總是)一個好主意。

  • 與其專注於查詢數量,不如關注通過優化您的查詢減少查詢所花費的時間。擁有更多的小型優化查詢通常要比試圖減少查詢次數更有效率。

  • 使用探查器如內置於XDebug的探查器。與KCacheGrind或WinCacheGrind等解釋器一起,優化代碼確實有助於您瞭解要關注的內容。不值得優化的東西只會影響總執行時間的微不足道。值得了解* CacheGrind中的所有內容。

我的PHP內容管理系統通常是在大約相同的時間(下降到最低的8ms的一切是緩存命中)加載頁面。但偶爾,當你做一些複雜的事情時,可能需要超過500毫秒。當關心用戶體驗時,典型的時間更重要,而不是更多的異常值,但當擔心服務器負載時,平均時間更重要,因此那些500毫秒的異常值突然變得非常重要。