0

我正在使用对请求有限制的 API。API 响应采用 XML 格式,通常大约 8 kB 大。简而言之:我想消除向 API 发送两次完全相同的请求。

可能有超过 200 万个请求及其适当的答案。因此,当我将大量 XML 响应复制到 MySQL 中的记录时,如果我查询它,它的响应速度是否足够快?

表结构:

  • id int PK 自动增量
  • request_parameters 文本唯一
  • 回复文本

我找到了 MySQL Query Cache,但我认为它只适用于大量请求的请求。另一个可能会慢下来?我还找到了 Varnish,但在我看来它更像是一个 HTML/代码缓存。

4

1 回答 1

1

我假设:

  • 您只需response要从给定的request_parameters( ...WHERE request_parameters = 'some string')中获取 a
  • request_parameters不太长(少于 1000 个字符)

我建议:

  1. 删除您的 ID 列。尽管有些人建议始终使用整数作为主键,但我知道您并没有尝试构建关系数据库。你只需要一张桌子来存放。

  2. request_parameters将列类型更改为VARCHAR(x),“x”是参数字符串的最大预期大小。

  3. 制作request_parameters主键。

  4. 按照 PLB 的建议,存储您的 XML 响应的序列化版本。

200 万行这样的数据将需要几个 Gb,以及一些索引空间。如果您的系统上有大量可用内存,并且如果您在重新启动 MySQL 时能够承受丢失所有数据的后果,那么您可能想尝试使用 MEMORY 表。

于 2012-06-14T03:10:25.577 回答