【问题标题】:Can I disable caching of Fuseki server?我可以禁用 Fuseki 服务器的缓存吗?
【发布时间】:2014-03-03 08:06:48
【问题描述】:

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

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

请告诉我如何禁用缓存。

【问题讨论】:

    标签: caching sparql jena semantic-web fuseki


    【解决方案1】:

    你在说什么缓存?

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

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

    编辑

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

    如果您希望进行基准测试,那么消除缓存影响的方法比关闭缓存要好得多,因为禁用缓存(即使可以)不会为您提供实际的性能数据。有几种消除缓存效果的实际方法:

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

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

    【讨论】:

    • 感谢您的回复。目前我正在使用带有“--mem”选项的内存上的 Fuseki(非常快)。我正在开发一个用于研究的查询重写中间件,并使用 Fuseki 作为后端。对于基准测试,我想消除查询处理中冷/热缓存的影响。
    • 太棒了!谢谢你的好意。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-31
    • 1970-01-01
    • 2018-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多