2011-03-05 159 views
13

我必須在一個頁面上爲一個人運行一次10個MySQL查詢。這很糟糕嗎?我有很好的託管,但仍然,它可以打破或什麼?非常感謝你。有多少查詢太多?

+0

它可以花費bandwitdh。但不是。 – Thew 2011-03-05 12:40:25

+0

可能重複的[MySQL:每頁有多少個查詢太多?](http://stackoverflow.com/questions/2308747/mysql-how-many-queries-per-page-is-too-many) – 2016-08-01 10:56:22

回答

10

10快速查詢可以比1慢一個更好的。根據響應時間,吞吐量,正常和偷看流量情況定義什麼是可接受的,並測量這10個查詢是否有問題(即不尊重您的期望)。

如果他們是,然後嘗試改變你的設計,並找到一個更好的解決方案。

2

我認爲這不是問題。 10個查詢對於一個網站來說不是那麼重要。越少越好,但是當你有3000-5000時,你應該考慮你的結構。

而當你通過一個沒有索引的數百萬行的表進行一個查詢時,那麼這個數字就是10。

我看到一個Typo3網站,有很多擴展,使緩存7500請求。這發生在你安裝和安裝時,並沒有看到會發生什麼。

但是你可以看看你在查詢少的表上進行邏輯聯接。

0

那麼有大的查詢和小的瑣碎的查詢。哪些是你的?通常,您應該嘗試儘可能少地查詢數據。隨着流量的增加,數據庫服務器上的負載越重,服務客戶端的難度越大。

6

有多少查詢太多?

我會改寫你的問題:

是我的應用程序速度不夠快?

爲您的應用程序(基於業務/用戶需求)提供「足夠快」的業務定義,提出一種方法來模擬所有使用場景和預期負載,創建該負載和配置文件的模擬(跟蹤/時間)它。

這種方法相當於一個受過教育的猜測。任何缺乏的都是純粹的猜測,毫無價值。

如果您的應用程序已經投入生產,並且在大多數情況下運行良好,您可以從用戶那裏獲得反饋以確定問題點。從那裏,你可以模擬這些痛點和相應的負載,以及配置文件。

記錄您的結果。一旦對應用程序進行了改進,就可以使用工具來確定您所做的優化是否實現了您的目標。

21

Drupal網站通常會爲每個請求提供150到400多個查詢。查詢數據庫花費的總時間仍低於1秒 - 這不是殺死服務器的數量,而是查詢的質量/複雜度(以及可能的數據集大小)。

我不能說出你在說什麼查詢,但是在大多數網站上,10並沒有多大意義。

如果您關心的是性能,您總是可以看到您的查詢在數據庫管理程序(例如MySQL Workbench)中執行的時間。

+0

是的,我同意。根據我的WordPress網站上的頁面,我每次請求的查詢次數在100-150之間,執行所有請求需要0.2秒。 – 2015-09-30 12:31:44

+0

但是,如果數據庫服務器和Web服務器之間存在延遲(例如,如果它們不在同一臺計算機上並且延遲時間大約爲10毫秒),那麼它可能會有150個查詢可以變爲2秒延遲 – 2017-08-12 20:59:13

0

只是爲了有點不同角度的增加其他很好的答案:

一是同意,你正在查詢將重要的時間比查詢數量99%以上的類型和複雜性。

但是,在極少數情況下,數據庫服務器的網絡路徑上存在高延遲(即數據庫服務器是遠程或類似的,並不是說這是邏輯或理智的設置,但我已經看到它完成了)那麼您希望儘量減少查詢的次數,因爲每次與數據庫服務器通信時,網絡傳輸時間將比計算查詢所用的時間要長一個數量級或兩個數量級。這種情況可能會導致您的頁面加載時間縮短,因此您希望儘量減少查詢次數(實際上,您只是想更改服務器設置...)。

3

如果你是一個新的發展。我建議專注於避免過度處理的最合理和最明顯的方法。不要花太多時間思考查詢的數量並關注寫得很好的代碼。這意味着很好地使用類,方法和函數。

這將導致更容易調試代碼本身可以導致更好的性能嗎?然後在某個階段可以提高應用程序的性能。使用編寫良好的代碼時可以輕鬆完成的任務。

您可以使用常用查詢方法創建類並始終使用它們。通過這種方式,所有查詢都可以通過一個單獨的課程,並且從那裏開始,您可以在軟件生命週期的很多事情上進行改進。

有許多方法可以避免重複查詢或編寫比需要更復雜的查詢,這種情況發生了很多。如果標記符合工作的樂趣,那麼它更容易改進並賣給其他開發人員。