2012-03-26 17 views
0

私は約200MBのデータを持つデータベースとテーブルを持っています。 (製品の説明と多くの値) 詳細ページを表示するには、この値が必要です。だから私は物事をスピードアップするために少しのキャッシュシステムを使うつもりです。私はシリアル化はPHPで行くためのより良い方法だと思う。PHPのSQLキャッシュ、シリアライズ、最適化?

今、最高のスピードを得るために、自分のデータを保存する方法を知りました。 すべての製品を1つのファイルとして、すべての製品またはチャンクを含む1つのファイル(ファイルごとに100個の製品を作成できます)私はそれをシリアル化し、それを保存し、このようなオブジェクトに情報を格納したい

class saveObj 
{ 
$sql = "SELECT * FROM products LIMIT 0,100" 
$time; 
$data;  
}; 

ファイル名:sql_products_0_100.data

私の計画は、効率的なのでしょうか、誰でもへの道を知っているん最適化しますか?

答えて

0

これは、いくつかのテストコードを書くと、いくつかのプロファイリングを行うことなく言い難い(私は1日1回、すべてのデータファイルを作成します)。

ファイルルートごとに100の製品を使用する場合は、100の製品すべてを使用してページを生成しますか?

1つのファイルに1つのファイルがあるということは、1ページあたり約100ファイルのデータが必要な場合、ディスクが多く検索する必要があることを意味します。

ファイルごとに100個の製品があるということは、ページに1個の製品のみが必要な場合は、すべてのデータを読み込み、抽出する適切な製品を検索する必要があることを意味します。

私の提案は、APCを調査することです。キャッシュはメモリに保存されているため、アクセスは非常に高速であり、キーごとに1つの製品を保管することができるため、リトライとストレージが簡素化されます。

負荷が増え、複数のサーバー間で負荷分散されている場合、分散メモリキャッシュシステムであるmemcachedを見ることができます。

+0

私はMemcachedについて考えましたが、memcachedはショッピングソフトウェア(prestashop)に問題があるようです。ファイルを使用すると、一部のpythonスクリプトでデータを変更することもできます。商品データは1日に1回「更新」する必要があります。そのため、クロールのすべての商品ページ(Googleマーチャント、その他の検索サイト)である必要があります。 –

+0

memcachedの場合、値がメモリに格納されていると、保存されている値が多すぎると問題が発生しないでしょうか? –

+0

いいえ、memcachedはそれで問題ありません。たとえば、8GbのRAMを搭載したサーバーがあるとします。オブジェクトを格納するためにmemcacheに7Gbを割り当てることができます。これはあなたの目的のためにぴったりしているはずです。それで十分でない場合は、プールにマシンを追加できます。ただし、1台のサーバを稼働させている場合は、単一サーバのキャッシュに最適なAPCを参照してください。 – F21