-1

ロードするたびに 2 つの異なる MYSQL テーブルに対して 4 つの SQL 呼び出し (2 つの SELECT、1 つの INSERT、および 1 つの UPDATE) を行うページがあります。

このページは、キャッシュなしで PHP でコーディングされています。各テーブルのサイズは約 30,000 行になると予想されますが、負荷テストは行っていません。SELECT クエリは、クエリごとに最大 5 行をプルします。

過度の負荷でデータベースがクラッシュしないようにするにはどうすればよいですか。クエリで参照されている列に対応するテーブルにインデックスを追加すると役に立ちますか?

4

1 に答える 1

2

まず、30,000 行は大量のデータではありません。データベースはそれを簡単に処理できるはずです。

s が繰り返される場合、SELECT有効にする必要があるクエリ キャッシュはおそらくそれらをキャッシュするため、それらからの負荷は無視できます。ほとんどの場合、フィルター処理と並べ替えを行う列にはインデックスが必要です。そのため、クエリでインデックスが使用されていることを確認してください。

INSERTs からのデータをすぐに必要としない場合は、 を使用できますINSERT DELAYED。これにより、テーブルが使用されなくなるまで挿入がキューに入れられ、待機中のすべての行が同時に挿入されます。INSERT毎秒複数の s が一貫して発生することを期待していない限り、使用してINSERT DELAYEDもおそらく顕著な違いはありません。

UPDATEもインデックスを使用していることを確認してください。

もっと具体的に言うと、DBの構造やコードなどの情報がもっと必要です。

于 2013-02-20T18:33:52.880 に答える