2009-10-09 52 views

回答

2

這個問題有意思的是方向的數量你可以走了。

我不確定緩存是否是您的最佳選擇,僅僅是因爲大量數據集以及相對較少的查詢數。這裏有一些想法。

1)Build a ram disk。鏈接你的mysql數據庫表以使用ramdisk分區。我從來沒有嘗試過,但嘗試一下會很有趣。

2)Linux通常有一個非常快的文件系統。構建一個將記錄分解成文件的結構化文件系統,並調用file_get_contents()或file_exists()。當然,這個解決方案需要你建立和維護文件系統,這也很有趣。 rsync可能會有助於保持活動文件系統的最新狀態。

例子:

/002/209/001/299.txt 

<? 
$file = $this->build_file_from_ip($_GET['ip']); 
if(file_exists($file)) { 
    // Execute your code. 
} 
?> 
+0

你也可以去多服務器路由。基於IP,使用不同的數據庫連接(或API調用)。將數據分解到多個服務器會減少每個服務器的壓力,從而提高訪問速度。 – Dooltaz 2009-10-09 21:09:49

+0

它似乎也可以將表格存儲到內存中。 http://dev.mysql.com/doc/refman/5.1/en/storage-engines.html看看「Memory」或HEAP表類型。您可能可以嘗試使用「MyISAM」而不是此功能。 – Dooltaz 2009-10-09 21:13:50

+0

有趣的是,你的兩個解決方案都可以鏈接在一起:)我的HD目前有600萬個inode,因此唯一的方法是創建更多inode的文件系統,我認爲這可以通過RAMDISK !然而,我想首先檢查元數據佔用多少,因爲具有100個字節的20M文件已經佔用2GB的RAM – konr 2009-10-09 21:59:39

2

我認爲把它扔到memcache中可能是你最好/最快的方法。

2

如果把文件讀入SQLite的將是一種選擇,你可以從索引中獲益從而加快查找?

否則memcached是一個選項,但我不知道如何檢查是否存在會如果你這樣做去與純PHP查找(寧慢我的猜測)

1

您已經嘗試了的NoSql解決像Redis?整個數據集在內存中進行管理。

這裏有一些benchmarks

相關問題