0

リクエストに制限のある API を使用しています。API 応答は XML であり、通常は約 8 kB の大きさです。簡単に言うと、API にまったく同じ要求を 2 回送信することを排除したいと考えています。

適切な回答を含む 200 万件を超えるリクエストが存在する可能性があります。その量の XML 応答が MySQL のレコードにコピーされた場合、クエリを実行しても十分に速く応答するでしょうか?

テーブル構造:

  • id int PK 自動インクリメント
  • request_parameters TEXT UNIQUE
  • 応答テキスト

MySQL Query Cache を見つけましたが、リクエストの多いリクエストに対してのみ便利だと思います。もう一方はおそらく遅くなりますか?Varnish も見つけましたが、HTML/コード キャッシュのように思えます。

4

1 に答える 1

1

私が想定し:

  • response与えられたrequest_parameters...WHERE request_parameters = 'some string')からのみフェッチする必要があります
  • request_parameters長すぎない(1000文字未満)

私はアドバイスします:

  1. ID列を削除します。主キーとして常に整数を使用することを推奨する人もいますが、リレーショナルデータベースを構築しようとしているのではないことを理解しています。ストレージ用に必要なテーブルは1つだけです。

  2. request_parameters列タイプをに変更しますVARCHAR(x)。「x」は、パラメータ文字列の予想される最大サイズです。

  3. request_parametersキーを作成します。

  4. PLBのアドバイスに従って、XML応答のシリアル化されたバージョンを保存します。

このようなデータの200万行には、数Gbに加えて、インデックス用のスペースが必要になります。システムに非常に多くの使用可能なメモリがあり、MySQLを再起動したときにすべてのデータを失う余裕がある場合は、MEMORYテーブルを試してみることをお勧めします。

于 2012-06-14T03:10:25.577 に答える