有些時候我們希望減少對資料庫的查詢來提高程式的效能,因為這些資料不是經常變更的,而是會在很長一段時間內都不會變化,因此,我們每連線一次資料庫,都會把相應的結果用檔案的形式儲存起來。比如對於乙個**來說,我們的商品的數量可能會經常變,但是我們的商品型別以及商品的**這些東西都會在很長的一段時間內不會變更,如果我們需要頻繁的查詢它們的時候,就可以使用資料庫快取技術。
第一點首先看我們普通情況下執行一條sql查詢的開銷,我們先連線資料庫,然後準備sql查詢,接下來傳送查詢資訊,然後取得返回結果,最後關閉資料庫連線,這樣的話會占用較多的資源,而我們的php程式也因為要等待從資料庫中查詢而使得響應速度變慢。
第二點就是在資料庫壓力較大時,比如高峰時段,這個時候資料庫壓力大,我們就需要把一些資料儲存到硬碟上,用檔案的形式去讀取,這樣的做法是用我們的硬碟空間換取資料庫的壓力,這一點也要看機器效能。
第三點就是有些資料不著急去更新,比如上面提到的商品型別表,就不會太急於更新,比如我們的使用者的核心資訊,一般也不會輕易去修改密碼什麼的,這些內容可以選擇用檔案的形式去快取起來。
1. 使用mysql自帶查詢快取
mysql> show variables like '%query%' ;
select sql_no_cache * from my_table where condition ;來關閉快取
select sql_cache * from my_table where condition ;來開啟快取
mysql查詢快取缺點
2. 使用 redis or memcache 進行快取
第一點就是我們要確定何時強制更新內容,最常見的有三種方式就是第乙個就是用時間去觸發,我們通常使用時間戳,第二點就是發現資料庫資料被修改,則自動更新快取,第三個就是人工觸發,我們用人工的防水告訴資訊系統強制更新快取內容。
第二點就是我們可以通過使用serialize()函式來把從資料庫中取得的資料進行序列化,儲存為本地檔案,然後我們通過unserialize來從本地檔案中讀取資訊,所謂序列化就是用特定的方式去儲存php的值,它會保證部丟失這些值的型別和結構。
redis 和 memcache 區別
高併發解決方案 9 大流量解決方案
常用的nginx。位於網路7層之上的http層,針對http應用做一些分流的策略。nginx單台機器可以承受2w到3w的併發量。任何一台伺服器都有乙個極限,一旦訪問量到了這個點,效能會急劇惡化。最大併發5w,實際上可能3 4w就會引發效能惡化,然後拖著到極限,最後宕機。隨著併發流量的增加,反向 已經...
PHP高併發和大流量的解決方案
第乙個要說的就是資料庫,首先要有乙個很好的架構,查詢盡量不用 避免相關子查詢 給經常查詢的新增索引 用排序來取代非順序訪問,如果條件允許 一般mysql伺服器最好安裝在linux作業系統中 關於apache和nginx在高併發的情況下推薦使用nginx,ginx是apache伺服器不錯的替代品。ng...
PHP高併發和大流量解決方案整理
一 高併發的概念 在網際網路時代,併發,高併發通常是指併發訪問。也就是在某個時間點,有多少個訪問同時到來。二 高併發架構相關概念 1 qps 每秒查詢率 每秒鐘請求或者查詢的數量,在網際網路領域,指每秒響應請求數 指http請求 2 pv page view 綜合瀏覽量,即頁面瀏覽量或者點選量,乙個...