0

私のアプリケーションには平均 2000 人のオンライン ユーザーがいて、これは非常に多くのページ ロードです。私の質問は、各ページの読み込みでいくつの mysql クエリを実行できるかということです。私のアプリケーションは大量のデータをロードする必要があるためです。

データベースがクラッシュする可能性はありますか? または私のサーバー?

_ ____ いくつかの情報_ ____
メモリ制限: 60Mb
並列プロセス: 15
スクリプト実行時間: 30
DB: MySQL5 (1Gb)

構造: 構造では、すべてのテーブルが非常によく相互接続されています。ほとんどのフィールドの 95% は INT タイプです (FOREIGN キーと PRIMARY キーによって関連付けられています)。14テーブルあります。全部で 32 個の INT フィールドと 6 個の TEXT フィールドがあります。

サーバーにアプリケーションをインストールできない場合、データをキャッシュする他の方法はありますか?

4

2 に答える 2

1

このような負荷の場合、アプリケーションとMySQLサーバーの間にレプリケーションとロードバランサーを備えた複数のサーバーをセットアップして、読み取り負荷を複数のインスタンスに分散することができます(@thecatontheflatが提案するように、クエリのキャッシュと最適化を検討してください)。また、可用性にも役立ちます(1つのDBサーバーがダウンすると、他のサーバーがその作業を分担する可能性があります)

于 2012-08-02T11:42:00.413 に答える
1

そのような負荷がある場合は、何らかのキャッシュを設定することを検討し始める必要があります。そのため、リクエストは DB に 1 回だけヒットします。

これに対する私の選択はVarnishです。

たとえば、ユーザー関連のデータなど、部分的に動的なコンテンツがある場合は、Edge Side includesで使用できます。

また、選択条件を集約して、クエリをできるだけ最適化しないようにしてください。たとえば、最初idsに - 選択する必要があるものをすべて集めてから - 実行しますSELECT * FROM table WHERE id IN (...)

その後、データベースを気にすることなく、サーバー側で結果を操作できるようになります


編集

ホスティングにアプリケーションをインストールできない場合は、1 回のリクエストでできるだけ多くのデータをフェッチしてから、配列を操作する必要があります。

また、フィールドにインデックスを付けることも重要です。これにより、クエリが高速化されます。

于 2012-08-02T11:28:48.760 に答える