缓存API对MySQL的响应 - 这是一种好的做法吗?

时间:2012-06-12 12:13:50

标签: php mysql caching

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

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

表格结构:

  • id int PK Auto Increment
  • request_parameters TEXT UNIQUE
  • 回应文字

我发现了MySQL查询缓存,但我认为它对于请求的请求很有用。另一个可能会慢下来? 我也找到了Varnish,但在我看来更像是一个HTML /代码缓存。

1 个答案:

答案 0 :(得分:1)

我假设:

  • 您只需要从给定的responserequest_parameters
  • 中提取...WHERE request_parameters = 'some string'
  • request_parameters不会太长(不超过1000个字符)

我建议:

  1. 删除您的ID列。虽然有些人建议总是使用整数作为主键,但我知道您并不是在尝试构建关系数据库。您只需要一张桌子进行存储。

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

  3. request_parameters设为主键。

  4. 根据PLB的建议,存储XML响应的序列化版本。

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