我正在使用一个对请求有限制的API。API 响应采用 XML 格式,通常大小约为 8 kB。简而言之:我想消除将相同的请求精确地发送到 API 两次。
可以有超过 200 万个请求及其适当的答案。因此,当我将如此数量的 XML 响应复制到 MySQL 中的记录时,如果我查询它,它的响应速度会足够快吗?
表结构:
- id int PK Auto Increment
- request_parameters文本唯一
- 响应文本
我找到了MySQL查询缓存,但我认为它只方便很多请求。另一个可能会放慢速度?我也找到了Varnish,但在我看来它更像是一个HTML/代码缓存。
我假设:
- 您只需要从给定的
request_parameters
获取response
(...WHERE request_parameters = 'some string'
) -
request_parameters
不要太长(少于 1000 个字符)
我建议:
-
删除您的 ID 列。虽然有些人建议始终使用整数作为主键,但我知道您并没有尝试构建关系数据库。您只需要一张桌子进行存储。
-
将
request_parameters
列类型更改为VARCHAR(x)
,"x"是参数字符串的最大预期大小。 -
将
request_parameters
设为主键。 -
按照 PLB 的建议,存储 XML 响应的序列化版本。
2 百万行此类数据将需要几 Gb,外加一些索引空间。如果您的系统上有大量可用内存,并且如果您可以承受在重新启动MySQL时丢失所有数据,那么您可能需要尝试使用MEMORY表。