簡體   English   中英

提高網站性能的建議 - PHP/MySQL

[英]Recommendation(s) to improve website performance - PHP/MySQL

前一段時間,我們編寫了一個內部網站,提供注冊到我們網站的所有用戶的持續更新。 該網站提供了過去 5 分鍾內注冊用戶的信息,需要常量 SQL ( select * from users... ) 獲取所有用戶where (Current time - Registered time) <= 300 seconds 隨着時間的推移,不斷的 SQL 查詢已成為瓶頸(並不是我們不知道這不會發生,但我們當時需要內部站點,因為目標受眾非常小,這是一個快速的解決方案)。

任何人都可以向我提供有關如何消除周期性 SQL 獲取的建議以及可以提高網站性能的其他解決方案嗎?

也許你可以在這里使用緩存。 注冊時緩存每個新用戶; 這樣他們就在 memory 中。

在排隊一定數量或達到固定時間段后,緩存所有注冊並插入數據庫的人。

緩存是這里通常考慮的一個選項。 許多人選擇了 membase(memcached 的擴展),這是一種內存中的鍵值緩存,能夠持久保存到磁盤並且可以很好地擴展。 Couchbase 的網站上有一個 PHP 客戶端庫,您會發現緩存內容會將 1 秒以上的查詢變成亞毫秒級的查詢。 API 也很簡單:

    $mc = new Memcached;
    $mc->addServer("localhost", 11211);
    $mc->set("a", 1); // set a 1 to the key 'a'
    $mc->get("a"); // retrieve value at key 'a'

要解決這個特定問題,緩存結果可能是最好的解決方案。 它只需要緩存幾秒鍾——如果數據延遲了 10 秒,大多數人都不會注意到。 根據應用程序,您最多可以延遲 10 分鍾。

緩存昂貴查詢的另一半是您需要在更新時向 state 的緩存數據添加一個標志。 這會阻止多個線程確定它已過時並且所有線程都獲取更新。 你只需要一個線程來做到這一點!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM