2012-08-23 62 views
-2

可能重複:
Tactics for using PHP in a high-load site加速PHP/MySQL的

我是新來的。這是第一次。

我的一個網站(這是在PHP/MySQL的)越來越良好的交通,我也升級了託管到VPS。在繁忙時間,每小時可以獲得7-8個用戶,並且有近5萬個數據庫請求。但我仍然在高峯時間遇到性能問題。這個網站沒有數據庫交易。它只是爲來自mysql服務器的移動應用提供XML feed(單向流量,沒有數據來自用戶)。現在我跟我的託管關於速度和他們談到了一些東西,我迫切需要你的公司招聘

  1. 他們談論memcached的安裝意見。將只是安裝它解決問題?我如何使用它?因爲他們談論,就好像安裝這將解決問題。
  2. Mysql查詢緩存。我知道如何使用它。它會提高性能嗎?我的大多數用戶要求3-4個結果(70%的流量)。
  3. 由於所有的查詢只是選擇查詢,所以我如何進行優化,以便在獲取結果時不會鎖定mysql表。或者我可以從你那裏得到任何其他建議。

非常感謝您的時間和幫助。

+1

「每小時可以獲得7-8個用戶」您的意思是7,000-8,000? –

+0

你需要將這些問題分解爲單個問題。 – Matt

+1

我想你應該首先閱讀http://stackoverflow.com/questions/24675/tactics-for-using-php-in-a-high-load-site。 –

回答

0

他們談論memcached的安裝。將只是安裝它解決問題?我如何使用它?因爲他們談論,就好像安裝這將解決問題。

它會幫助,但不能解決所有問題。但是,如果你不知道如何使用它,它不會幫助你做任何事情。

MySQL查詢緩存。我知道如何使用它。它會提高性能嗎?我的大多數用戶要求3-4個結果(70%的流量)。

它會降低查詢。但是,如果你想提供實時結果,這將無濟於事。

由於所有的查詢只是select查詢,我怎樣才能優化,以便mysql表在獲取結果時不被鎖定。或者我可以從你那裏得到任何其他建議。

  • 的MyISAM =表級鎖;
  • InnoDB =行級鎖。

使用EXPLAIN看到你可以在你的查詢優化是什麼。

隨着你給的細節,這是我可以提供的所有幫助。

0

1)Memcached可以提供幫助,但它會掩蓋真正的問題。這可以像任何緩存一樣工作:臨時存儲資源需求過程的結果,如大型查詢,長算法等。你必須改變你的應用程序來使用這個緩存系統。

2)查詢緩存。在你的情況下,MySQL查詢緩存可能是一個更好的解決方案,如果你的訪問量很大,這個解決方案是有效的但關於你的第三個問題,你也有鎖定問題,如果你打開查詢緩存,你也會有互斥的爭論。查詢緩存失效是昂貴的過程。如果你還沒有將存儲引擎改爲具有行級鎖定功能的InnoDB,並且新版本的MySQL比MyISAM具有更多的優化功能, (嘗試使用最新版本)

3/b)檢查表上的索引並使用EXPLAIN分析查詢。

+)「每小時7-8個用戶和幾乎5萬個數據庫請求」這似乎是7-8個用戶的大量查詢。嘗試檢查您的數據庫模式和應用程序代碼。我通過foreach中的查詢來看到類似這樣的事情,這些查詢通常可以合併爲一個更復雜的查詢。