1

我想禁用 Fuseki 服务器的 SPARQL 查询缓存。我可以禁用它吗?怎么办?我正在考虑以下方法:

  1. 使用命令行参数 - 看起来毫无准备
  2. 使用设置文件 (*.ttl) - 我找不到禁用缓存的符号
  3. 编辑服务器代码 - 基本上我不会这样做:(

请告诉我如何禁用缓存。

4

1 回答 1

3

你在说什么缓存?

正如JENA-388中所讨论的,当前的默认行为实际上是添加禁用缓存的标头,因此没有任何 HTTP 级别的缓存。

如果您使用的是 TDB 后端,则有用于提高查询性能的缓存,而这些缓存是不可配置的 AFAIK。此外,即使你能做到,关闭它们也可能会大大降低性能,所以这不是一个好主意。

编辑

--mem选项使用纯内存数据集,因此没有缓存。请注意,当您扩展数据时,这实际上会比使用 TDB 慢得多,并且仅在较小的数据集大小时速度更快。

如果您正在寻找基准测试,那么有比关闭缓存更好的方法来消除缓存的影响,因为禁用缓存(即使可以)不会给您提供实际的性能数字。有几种现实世界的方法可以消除缓存效应:

  1. 运行热身 - 某个固定数字或直到您看到系统达到稳定状态。
  2. 消除统计数据中的异常值,丢弃最好和最差的N结果,然后计算剩余部分的统计数据
  3. 使用查询参数化,使用查询模板并每次将不同的常量替换到其中,从而确保您不会每次都发出相同的查询。查询计划缓存可能仍会生效,但由于 Jena 无论如何都不会这样做,因此对您的测试没有影响。

您可能想看看我的 2012 SemTech 演讲Practical SPARQL Benchmarking和相关的SPARQL Query Benchmarker工具。我们最近一直在对该工具进行重大修订版本,该版本具有许多新功能,例如支持查询参数化。

于 2014-03-03T09:10:45.173 回答