三月 27
加入書籤 Google Bookmarks HemiDemi Del.icio.us MyShare Baidu Yahoo! My Web Digg technorati furl YouPush udn共享書籤 Fiigo網路分享書籤
優化網站程式效率的作法很多,包括資料庫的充份正規化、快取技術、多層次主從架構等等,所有的方法為的都是減少不必要的運算和用最快的方式取得資料。

本文要談的是 memcache 這種作法,它是在主機上切出一塊記憶體作為公共儲存的空間。透過函示庫可以讓 php 這類的網頁程式將數值寫入記憶體備用。

那麼,實際的效能如何呢?

我以一個約二萬筆的資料表來作了一點試驗,得到以下數據:

開始測試 : 2010-03-27 22:24:57 0.14270200
鍵值查詢 : 2010-03-27 22:24:57 0.14330700   0.00060
欄位查詢 : 2010-03-27 22:24:57 0.16809800   0.02479
記憶快取 : 2010-03-27 22:24:57 0.16884600   0.00075
記憶鍵值 : 2010-03-27 22:24:57 0.16886300   0.00017

由以上的數據可以看出,以資料表的鍵值向 MySQL 送出的查詢非常快速,但用一般的欄位去查詢就非常緩慢,差了將近 41 倍,而透過一般欄位值 memcache 取得相同的資料的時間則和使用鍵值查詢的速度相仿,但使用鍵值直接向 memcache 取得資料則比 MySQL 查詢省了 2/3 的時間。

由此可知,在講究執行效率的平台上,千萬要避免對 MySQL 送出一般欄位的查詢;對於能直接或間接以鍵值取得的資料,則可以考慮將它預存在 memcache 中備查。如此就能讓程式效率發揮到最大!